android 网络请求库volley方法详解_Android

使用volley进行网络请求:需先将volley包导入androidstudio中

File下的Project Structrue,点加号导包

 

volley网络请求步骤:

      1. 创建请求队列       RequestQueue queue = Volley.newRequestQueue(this);

      2.创建请求对象(3种)    

                       StringRequest request = new StringRequest(“请求方法”,“请求的网络地址”,“成功的网络回调”,“失败的网络回调”);

                       ImageRequest request = new ImageRequest(“图片路径”,“成功的回调函数”,“图片宽度”,“图片高度”,“图片的颜色属性”,“失败的网络回调”);

                       Jsonrequest request = new Jsonrequest();

      3.把请求对象放入请求队列     queue.add(request);

 // 注销请求:重写onstop方法

 @Override
  protected void onStop() {
   super.onStop();
   /*取消当前请求队列的所有请求*/
   queue.cancelAll(this);
   /*取消当前请求队列tag为get的请求*/
   queue.cancelAll("get");
   /*取消当前请求队列tag为post的请求*/
   queue.cancelAll("post");
  }
//设置当前请求的优先级:重写getPriority方法
@Override
public Priority getPriority() {
 return Priority.LOW;
}
//设置请求头:重写GetHeader方法
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
 Map<String,String> map = new HashMap<String, String>();
 map.put("apikey","fc642e216cd19906f642ee930ce28174");
 return map;
}

//传递参数:重写GetParams方法
@Override
protected Map<String, String> getParams() throws AuthFailureError {
 Map<String,String> map = new HashMap<String, String>();
 map.put("num","10");
 map.put("page","1");
 map.put("word","%E6%9E%97%E4%B8%B9");
 return map;
}

代码部分:

xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 android:orientation="vertical"
 tools:context="com.jredu.helloworld.activity.VolleyActivity">
 <WebView
  android:id="@+id/volleyWebView"
  android:layout_width="match_parent"
  android:layout_height="300dp">
 </WebView>
 <ImageView
  android:id="@+id/img"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />
 <Button
  android:id="@+id/volleyButton"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="5dp"
  android:textAllCaps="false"
  android:text="Volley"/>
 <Button
  android:id="@+id/imgButton"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="5dp"
  android:textAllCaps="false"
  android:text="Volley获取图片"/>
</LinearLayout>

  activity文件:

package com.jredu.helloworld.activity;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ImageView;

import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.HttpHeaderParser;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.jredu.helloworld.R;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

public class VolleyActivity extends AppCompatActivity {
 WebView webView;
 Button button;
 Button imgButton;
 ImageView img;
 RequestQueue queue = null;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_volley);
  queue = Volley.newRequestQueue(this);
  webView = (WebView) findViewById(R.id.volleyWebView);
  img = (ImageView) findViewById(R.id.img);
  button = (Button) findViewById(R.id.volleyButton);
  button.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    doStringVolley2();
    doStringVolley();
   }
  });
  imgButton = (Button) findViewById(R.id.imgButton);
  imgButton.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    GetImg();
   }
  });
 }
 /*get方法*/
 public void doStringVolley(){
  /*创建请求队列*/
  //RequestQueue queue = Volley.newRequestQueue(this);
  /*创建请求对象*/
  StringRequest request = new StringRequest(
    Request.Method.GET,
    "http://apis.baidu.com/txapi/tiyu/tiyu?num=10&page=1&word=%E6%9E%97%E4%B8%B9",
    /*"http://www.baidu.com",*/
    new Response.Listener<String>() {
     @Override
     public void onResponse(String response) {
      String s = response;
      webView.getSettings().setDefaultTextEncodingName("utf-8");
      webView.getSettings().setJavaScriptEnabled(true);
      webView.loadDataWithBaseURL(null,s,"text/html","utf-8",null);
     }
    },
    new Response.ErrorListener() {
     @Override
     public void onErrorResponse(VolleyError error) {
      webView.loadDataWithBaseURL(null,"网络连接失败!!!","text/html","utf-8",null);
     }
    }
  ){
   /*设置请求头*/
   @Override
   public Map<String, String> getHeaders() throws AuthFailureError {
    Map<String,String> map = new HashMap<String, String>();
    map.put("apikey","fc642e216cd19906f642ee930ce28174");
    return map;
   }
   /*解析网络请求结果的方法*/
   @Override
   protected Response<String> parseNetworkResponse(
     NetworkResponse response) {
    try {
     String jsonObject = new String(
       new String(response.data, "UTF-8"));
     return  Response.success(jsonObject, HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException e) {
     return Response.error(new ParseError(e));
    } catch (Exception je) {
     return Response.error(new ParseError(je));
    }
   }
   /*设置当前请求的优先级*/
   @Override
   public Priority getPriority() {
    return Priority.LOW;
   }
  };
  request.setTag("get");
  /*把请求对象放入请求队列*/
  queue.add(request);
 }
 /*post方法*/
 public void doStringVolley2(){
  /*创建请求队列*/
  //RequestQueue queue = Volley.newRequestQueue(this);
  /*创建请求对象*/
  StringRequest request = new StringRequest(
    Request.Method.POST,
    "http://www.baidu.com",
    new Response.Listener<String>() {
     @Override
     public void onResponse(String response) {
      String s = response;
      webView.getSettings().setDefaultTextEncodingName("utf-8");
      webView.getSettings().setJavaScriptEnabled(true);
      webView.loadDataWithBaseURL(null,s,"text/html","utf-8",null);
     }
    },
    new Response.ErrorListener() {
     @Override
     public void onErrorResponse(VolleyError error) {
      webView.loadDataWithBaseURL(null,"网络连接失败!!!","text/html","utf-8",null);
     }
    }
  ){
   /*重写params方法写参数*/
   @Override
   protected Map<String, String> getParams() throws AuthFailureError {
    Map<String,String> map = new HashMap<String, String>();
    map.put("num","10");
    map.put("page","1");
    map.put("word","%E6%9E%97%E4%B8%B9");
    return map;
   }
   /*设置请求对象优先级*/
   @Override
   public Priority getPriority() {
    return Priority.HIGH;
   }
  };
  request.setTag("post");
  /*把请求对象放入请求队列*/
  queue.add(request);
 }
 /*获取图片*/
 public void GetImg(){
  ImageRequest request = new ImageRequest(
    "https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png",
    new Response.Listener<Bitmap>() {
     @Override
     public void onResponse(Bitmap response) {
      img.setImageBitmap(response);
     }
    },
    5000,
    5000,
    Bitmap.Config.ARGB_8888,
    new Response.ErrorListener() {
     @Override
     public void onErrorResponse(VolleyError error) {
      img.setImageResource(R.drawable.first5);
     }
    }
  );
  queue.add(request);
 }
 /*重写onStop方法,用来注销请求*/
 @Override
 protected void onStop() {
  super.onStop();
  /*取消当前请求队列的所有请求*/
  queue.cancelAll(this);
  /*取消当前请求队列tag为get的请求*/
  queue.cancelAll("get");
  /*取消当前请求队列tag为post的请求*/
  queue.cancelAll("post");
 }
}

以上就是android 网络请求库volley方法 的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, volley
volley方法
android volley详解、android volley请求、android http请求详解、volley https 请求、volley get请求带参数,以便于您获取更多的相关知识。

时间: 2024-11-04 16:45:09

android 网络请求库volley方法详解_Android的相关文章

android 网络请求库volley方法详解

使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包 volley网络请求步骤: 1. 创建请求队列       RequestQueue queue = Volley.newRequestQueue(this); 2.创建请求对象(3种) StringRequest request = new StringRequest("请求方法","请求的网络地址","成功的网

Android 网络请求框架Volley实例详解

Android 网络请求框架Volley实例详解 首先上效果图 Logcat日志信息on Reponse Volley特别适合数据量不大但是通信频繁的场景,像文件上传下载不适合! 首先第一步 用到的RequetQueue RequestQueue.Java RequestQueue请求队列首先得先说一下,ReuqestQueue是如何对请求进行管理的...RequestQueue是对所有的请求进行保存...然后通过自身的start()方法开启一个CacheDispatcher线程用于缓存调度,开

Android GZip的使用-开发中网络请求的压缩实例详解_Android

Android  GZip: gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序. HTTP协议上的GZIP编码是一种用来改进WEB应用程序性能的技术.一般服务器中都安装有这个功能模块的,服务器端不需做改动. 当浏览器支持gzip 格式的时候, 服务器端会传输gzip格式的数据. 从Http 技术细节上讲,就是 http request 头中 有 "Accept-Encoding", "gzip" ,response 中就有返回头Content-En

Android对话框AlertDialog.Builder使用方法详解_Android

我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢? 幸运的是,an

Android intent之间复杂参数传递方法详解_Android

本文详细讲述了Android intent之间复杂参数传递方法.分享给大家供大家参考,具体如下: Intent是Activity与Activity之间,Activity与Service之间传递参数的介质,而这两种通常实现的是Java基本对象类型和String的传递. 在实际项目中,页面之间传值,除了以上几种,经常还有传递Object对象.List类型.List<Object>类型和全局变量等等的需求.本文就是介绍怎么传递这几种类型的参数. 一.传递List<String>和List

Android组件ViewStub基本使用方法详解_Android

ViewStub可以在运行时动态的添加布局.帮助文档给定的定义是: "A ViewStub is an invisible, zero-sized View that can be used to lazily inflate layout resources at runtime. When a ViewStub is made visible, or when inflate() is invoked, the layout resource is inflated. The ViewStu

《Android 网络开发与应用实战详解》——2.3节Android系统架构

2.3 Android系统架构 Android 网络开发与应用实战详解 在本节内容中,将进一步分解Android应用程序,详细剖析Android应用程序的核心构成部分,为读者学习本书后面知识打下基础. 2.3.1 Android体系结构介绍 Android作为一个移动设备的平台,其软件层次结构包括操作系统(OS).中间件(MiddleWare)和应用程序(Application).根据Android的软件框图,其软件层次结构自下而上分为以下4层. (1)操作系统层(OS). (2)各种库(Lib

Android中XUtils3框架使用方法详解(一)_Android

xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8) 今天给大家带来XUtils3的基本介绍,本文章的案例都是基于XUtils3的API语法进行的演示.相信大家对这个框架也都了解过, 下面简单介绍下XUtils3的一些基本知识. XUtils3一共有4大功能:注解模块,网络

Android中XUtils3框架使用方法详解(一)

xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8) 今天给大家带来XUtils3的基本介绍,本文章的案例都是基于XUtils3的API语法进行的演示.相信大家对这个框架也都了解过, 下面简单介绍下XUtils3的一些基本知识. XUtils3一共有4大功能:注解模块,网络