1、新建项目并将用到的jar包Volley.jar和gson-2.3.1.jar添加到项目的app/libs中


2、封装volley请求方便调用

VolleyUtil.java

package com.ihefe.test.volley;import android.content.Context;import android.os.Handler;import android.os.Message;import android.util.Log;import com.android.volley.AuthFailureError;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.StringRequest;import com.android.volley.toolbox.Volley;import com.google.gson.Gson;import java.util.Map;/** * 请求数据工具类 */public class VolleyUtil {    private static RequestQueue requestQueue;    private VolleyUtil() {    }    public static VolleyUtil getInstance() {        return VolleyUtilHold.getVolleyUtilInstance();    }    public   void init(Context context) {        requestQueue = Volley.newRequestQueue(context);    }    /**     * post请求     *     * @param path   请求路径     * @param map    请求参数     * @param entity 需要解析的类     * @return     */    public void StringRequest_POST(final Handler handler, String path, final Map map, final Object entity) {        StringRequest request = new StringRequest(StringRequest.Method.POST, path, new Response.Listener() {            @Override            public void onResponse(String response) {                Gson gson = new Gson();                Object o = gson.fromJson(response, entity.getClass());                Message msg = Message.obtain();                msg.obj = o;                handler.sendMessage(msg);            }        }, new MyErrorListener()) {            @Override            protected Map getParams() throws AuthFailureError {                return map;            }        };        request.setTag(path);        requestQueue.add(request);    }    /**     * get请求     *     * @param path   请求路径     * @param entity 需要解析的类     * @return     */    public void StringRequest_GET(final Handler handler, String path, final Object entity) {        StringRequest request = new StringRequest(path, new Response.Listener() {            @Override            public void onResponse(String response) {                Gson gson = new Gson();                Object o = gson.fromJson(response, entity.getClass());                Message msg = Message.obtain();                msg.obj = o;                handler.sendMessage(msg);            }        }, new MyErrorListener());        request.setTag(path);        requestQueue.add(request);    }    private static final class VolleyUtilHold {        public static VolleyUtil getVolleyUtilInstance() {            return new VolleyUtil();        }    }    /**     * 执行请求错误     */    public static class MyErrorListener implements Response.ErrorListener {        @Override        public void onErrorResponse(VolleyError error) {            //  LogUtils.showLog("VolleyError" + error.getMessage());        }    }    /**     * 需要手动解析字符串的post请求     *     * @param path     * @param succes     * @param error     * @param map     */    public void simple_post(String path,                            Response.Listener succes, Response.ErrorListener error,                            final Map map) {        StringRequest request_post = new StringRequest(Request.Method.POST,                path, succes, error) {            @Override            protected Map getParams() throws AuthFailureError {                return map;            }        };        request_post.setTag(path);        System.out.println(request_post);        requestQueue.add(request_post);    }    /**     * 需要手动解析字符串的get请求     *     * @param path     * @param succes     * @param error     */    public void simple_get(String path, Response.Listener succes, Response.ErrorListener error) {        Log.e("VolleyUtil", "path-->"+path);        StringRequest request = new StringRequest(path,succes,error);        requestQueue.add(request);    }    /**     * 取消请求     *     * @param path 请求路径     */    public void removeRequest(String path) {        requestQueue.cancelAll(path);    }}

3、activity调用volley工具类发送post请求

package com.ihefe.test.volley;import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.Toast;import com.android.volley.Response;import com.android.volley.VolleyError;import java.util.HashMap;import java.util.Map;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init_config(getApplication());//初始化        Map map = new HashMap<>();        map.put("username", "test");        map.put("password", "f5f97c92ae39d49a4fa87d97eb3d89ff");        //发送请求        VolleyUtil.getInstance().simple_post("http://192.168.15.43/server.php",                new Response.Listener() {                    @Override                    public void onResponse(String result) {                        Log.e("TAG", "onResponse: " + result);                        Toast.makeText(MainActivity.this, "请求成功",                                Toast.LENGTH_SHORT).show();                    }                }, new Response.ErrorListener() {                    @Override                    public void onErrorResponse(VolleyError arg0) {                        Toast.makeText(MainActivity.this, "网络错误!",                                Toast.LENGTH_SHORT).show();                    }                }, map);    }    /**     * 初始化设置     *     * @param context     */    public void init_config(Context context) {        VolleyUtil.getInstance().init(context);    }}

4、AndroidManifest.xml中添加网络请求权限



5、运行app项目查看结果:



附:

server.php

<?php$data[]=array('name'=>'test','age'=>100);$data[]=array('name'=>'小黑','age'=>80);$data[]=array('name'=>'小白','age'=>80);$result['list']=$data;$result['info']=$_POST;echo json_encode($result);


更多相关文章

  1. Android(安卓) 资源类型
  2. 自动编译 打包 签名 android程序
  3. Arouter异常汇总
  4. Android学习笔记(3)——Android(安卓)Demo演示
  5. Android(安卓)下载文件 显示进度条
  6. Android:用ViewPager实现广告栏
  7. Android用http协议上传文件
  8. Study:基于Selenium进行Android客户端自动化测试的例子。
  9. Android(安卓)APP拉起小程序、分享小程序、小程序打开APP

随机推荐

  1. android 定时器的实现
  2. Android(安卓)Service
  3. Android(安卓)进行单元测试难在哪-终
  4. android 系统资源的加载和获取
  5. Android布局文件属性
  6. android 界面布局 很好的一篇总结 【转】
  7. android 权限大全
  8. Mac系统下Android(安卓)SDK更新以及ADT无
  9. 解决Android(安卓)studio升级到3.5的一些
  10. Android中使用Movie显示gif动态图