1.volley框架使用基本上一样的顺序(三步走):(不需要考了创建新线程的问题)
访问网络别忘了添加权限:<uses-permission android:name="android.permission.internet"/>
<b>(1).创建</b>:requestqueue requestqueue= volley.newrequestqueue(this);
<b>(2.1.1)当使用stringrequest时 </b>
stringrequest stringrequest=new stringrequest(url,new response.listener(){},new response.errorlistener(){}){
public map<string, string> getheaders() throws authfailureerror {
hashmap map=new hashmap();
map.put("apikey ","你自己的apikey");
return map;
}
};
当用于接收json数据时,在url出写接口(如:
http://apis.baidu.com/heweather/weather/free ? city=beijing)
通过getheaders()函数传入apikey
在listener 的 onresponse()函数中得到jsonstring 的值。
<b>(2.1.2)也可以通过 getparams()对json的api参数值进行设置这时url的值就变了,并且参数多的第一个是请求方式:</b>
<b></b>
stringrequest stringrequest=new stringrequest(url,new
response.listener(){},new response.errorlistener(){}){
protected map<string, string> getparams() throws authfailureerror {
map.put("city","beijing"); //对应的apistore的参数是什么就写什么
<b>(注意:getheaders 、getparams()函数都是写在新代码区)</b>
<b>(2.2)jsonrequest的使用(两个直接子类:jsonobjectrequest和jsonarrayrequest)</b>
jsonobjectrequest jsonobjectrequest=new jsonobjectrequest("http://apis.baidu.com/heweather/weather/free?city=beijing", new response.listener<jsonobject>() {},new response.errorlistener(){}){
map.put("apikey ","af02a3e0e93ef6cbb85eada01a1c40ae");
};
<b>(在response.listener的onresponse()方法里通过textview2.settext(jsonobject.tostring()); 得到jsonstring)</b>
<b>在onerrorresponse中通过volleyerror.getmessage()的到错误提示)</b>
//使用jsonobjectrequest 需要注意:
/*使用jsonobjectrequest或继承自jsonobjectrequest类的对象提交post请求时,
如果有参数需要提交时必须一jsonobject的json串方式提交,否则通过getparams()方法的方式提交不管用
*/
<b>(2.3)加载网络图片</b>
<b>//第一个url图片的网址 第二个listener 第三第四为最大宽和高,第五为图片质量config.argb_8888四个字节,argb_565 argb_4444两个字节 第六个errorlistener</b>
imagerequest imagerequest=new imagerequest("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg", new response.listener<bitmap>() {
@override
public void onresponse(bitmap bitmap) {
imageview.setimagebitmap(bitmap);
}
}, 0, 0, bitmap.config.argb_8888, new response.errorlistener() {
public void onerrorresponse(volleyerror volleyerror) {
});
<b>(3)添加到 requestqueue中</b>
requestqueue.add(imagerequest);
// requestqueue.add(jsonobjectrequest);
// requestqueue.add(stringrequest);
二.volley还提供了 networkimageview控件加载网络图片(四步走)
1.首先在布局文件中创建networkimageview
(含有 void类型的setimageurl()、string getimageurl()(得到传入的url) 、void setdefaulimageid()(设置默认图片) 、seterrorimageid()(设置当网络加载失败时显示的图片) 等函数)
<b>1.创建requestqueue对象</b>
<b>2.创建一个imageloader</b>
<b>3.在布局文件中添加一个networkimageview控件</b>
<b>4.设置加载图片的网络地址和imageloader</b>
代码演示:
//首先定义出imageloader
imageloader imageloader=new imageloader(requestqueue, new imageloader.imagecache() {
public bitmap getbitmap(string s) {
return null;
public void putbitmap(string s, bitmap bitmap) {
networkimageview.setdefaultimageresid(r.mipmap.ic_launcher);
networkimageview.seterrorimageresid(r.mipmap.ic_launcher);//加载失败显示图片
networkimageview.setimageurl("https://p.ssl.qhimg.com/t01df31145427f5ea2f.jpg",imageloader);
三.自定义request
(用gson解析数据)
参考项目: https://github.com/linyuanbin/volley_kaiyuan