之前使用了开源网络请求库Volley进行了Http GET请求。这次我们讨论使用Volley进行POST请求。POST请求比GET稍微复杂一点点。可以认为是建立在GET的基础上。POST使发送的url更加简洁,安全,高效,使能发送更大量的数据。
该例子仍旧是对聚合数据的手机号码归属地进行请求,返回JSON数据,显示在TextView上。不要忘了在AndroidMenifest.xml内加入Internet权限。直接上代码:
public class MainActivity extends Activity {最后的实现效果如下截图所示:
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.id_text);
volleyPost();
}
public void volleyPost() {
String url = "http://apis.juhe.cn/mobile/get";//这里和GET方式不同的是去掉了“?”后面的参数;
/**
* 第一个参数指定了请求方式,第二个参数指定了url,第三个参数指定了正确访问的返回结果,第四个参数是访问失败后的业务逻辑;
*
*/
StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String result) {
text.setText(result);//返回结果显示在TextView;
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
text.setText("未能请求到数据");
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {//在这里封装了需要发送的参数;
HashMap<String, String> map = new HashMap<>();
map.put("phone", "13429667914");//以键值对的形式存放;
map.put("key", "9719c91bd4ac2647c67c6cd067b5cb8e");
return map;
}
};
Volley.newRequestQueue(getApplicationContext()).add(request);//加入请求队列;
}//volleyPost();
}
。
至此,已经成功实现了Http POST请求。可以根据业务需求对返回的JSON数据进行解析。
附Volley下载地址:http://pan.baidu.com/s/1dDFDbdJ