Android 开发 框架系列 OkHttp使用详解

简介

okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。

Android studio工程依赖:

testImplementation 'com.squareup.okhttp3:mockwebserver:3.11.0'

同步请求方式(get请求)

步骤一  创建请求接口网址

我使用了http://www.sosoapi.com/ 来创建了一个访问接口,用来验证OkHttp是否请求成功。如果你有兴趣了解,可以直接进入网站,里面有详细的demo演示。后续我将不在赘述这段。

我在请求响应里添加了一段JSON数据:

[
    {
        "name": "get测试",
        "content": "你成功获取了数据"
    }
]

步骤二  创建JSON解析方法

这里我写一下解析JSON数据的方法,来解析get或者post得到的JSON数据。后续我将不在赘述这段。

/**
     * JSON 解析方法
     * @param jsonData
     * @return
     */
    public String readJSONContent(String jsonData){
        try {
            StringBuffer sb = new StringBuffer();
            JSONArray jsonArray = new JSONArray(jsonData);
            for (int i=0;i<jsonArray.length();i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                sb.append(jsonObject.getString("name")+"\n");
                sb.append(jsonObject.getString("content")+"\n");
            }
            return sb.toString();
        } catch (JSONException e) {
            Log.e("JSONException错误", "readContent: "+e.toString());
            return e.toString();
        }
    }

步骤三  创建OkHttp 同步请求

/**
     * 同步请求
     */
    public void synchro(){
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                OkHttpClient okHttpClient = new OkHttpClient();//创建单例
                Request request = new Request.Builder()//创建请求
                        .url("http://www.sosoapi.com/pass/mock/12003//test/gettest")
                        .build();
                try {
                    Response response = okHttpClient.newCall(request).execute();//执行请求
                    mContent = response.body().string();//得到返回响应

                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mtextView.setText(readJSONContent(mContent));
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                    Log.e("OkHttpActivity", e.toString() );
                }
            }
        });
        thread.start();
    }

效果图:

 异步请求方式

猜你喜欢

转载自blog.csdn.net/qq_37217804/article/details/82262322