之前使用了开源网络请求库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方式不同的是去掉了“?”后面的参数;
-
-
-
-
- StringRequest request = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
- @Override
- public void onResponse(String result) {
- text.setText(result);
- }
- }, 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);
- }
- }
最后的实现效果如下截图所示:
。
至此,已经成功实现了Http POST请求。可以根据业务需求对返回的JSON数据进行解析。