Volley联网开源框架是一种联网获取数据的框架,他适合小型的数据获取,Volley分为两种获取方法,get和post请求。get是直接请求数据,post需要传入数值给网络获取相应的数据。使用他需要一个jar包!
以下是我自己写的Volley开源框架的类:
package com.example.imageloader;
import android.content.Context;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class Volley_LianWang {
public static void volley_Get(String url,final WangLuo_HuiDiao huiDiao,Context context){//GET请求
StringRequest stringReque=new StringRequest(url,new Response.Listener<String>() {
@Override
public void onResponse(String data) {
// 联网成功
huiDiao.getData(data);
//使用回掉接口
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// 联网失败
}
});
stringReque.setTag("get");
PublicApplication.getRequestQueue(context).add(stringReque);
}
public static void volley_Post (String url,final WangLuo_HuiDiao huiDiao,final HashMap<String, String> myMap,Context context){
StringRequest stringRe=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String data) {
// 联网成功
huiDiao.getData(data);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError arg0) {
// 联网失败
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//给服务器一个HasMap
return myMap;
}
};
stringRe.setTag("post");
PublicApplication.getRequestQueue(context).add(stringRe);
}
}
***********************************************************************
package com.example.imageloader;
import android.app.Application;
import android.app.ProgressDialog;
import android.content.Context;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class PublicApplication extends Application {
public static PublicApplication pApp;
public static RequestQueue requestQueue;
public static ProgressDialog progressDialog;
@Override
public void onCreate() {
pApp = this;
}
public static RequestQueue getRequestQueue(Context context){
if (requestQueue==null) {
requestQueue = Volley.newRequestQueue(context);
}
return requestQueue;
}
public static ProgressDialog getProgressDialog(Context context) {
progressDialog=new ProgressDialog(context);
return progressDialog;
}
}
********************************************************************************************
package com.example.imageloader;
public interface WangLuo_HuiDiao {
public void getData(String data);
}
******************************************************************************************************
*********************************************************************************************************
用以上3个类直接就可以在主方法里调用就行了
Volley_LianWang.volley_Get("http://guaju.github.io/imageloadertest.html", new WangLuo_HuiDiao() {
@Override
public void getData(String data) {
System.out.print("******************");
try {
System.out.print("******************");
JSONObject jsonObject = new JSONObject(data);
JSONArray j= (JSONArray) jsonObject.get("data");
for (int i=0;i>j.length();i++){
JSONObject jj= (JSONObject) j.get(i);
JSONObject jjj= (JSONObject) jj.get("person");
String ss= (String) jjj.get("imgurl");
System.out.print("*****************"+ss);
a.add(ss);
}
lv.setAdapter(abc);
}
catch(Exception e){
}
}
},this);
HashMap<String, String>map = new HashMap<String, String>();
map.put("menu", "川菜");
map.put("key", "755b97454ec4a4c55d926ece747e86d9");
Volley_LianWang.volley_Post("http://apis.juhe.cn/cook/query.php", new WangLuo_HuiDiao() {
@Override
public void getData(String data) {
System.out.println(data);
}
},map , this);
一定要在清单文件注册android:name="us.mifeng.bubaexaminationsystem.app.PublicApplication"
<application
android:allowBackup="true"
android:icon="@drawable/timg"
android:label="@string/app_name"
android:name="us.mifeng.bubaexaminationsystem.app.PublicApplication"
android:theme="@android:style/Theme.Light.NoTitleBar" >