安卓 okhttp小结


概念及原理

特性

    支持同步阻塞调用和具有回调的异步调用。

    OkHttp支持Android 2.3及以上版本。 对于JDK,最低要求是1.7。

 

Request是OkHttp中访问的请求,Builder是辅助类。Response即OkHttp中的响应。

 

代码部分

项目中使用EventBus:

S1.添加jar包或依赖

    compile 'com.squareup.okhttp3:okhttp:3.8.0'

    compile 'com.squareup.okio:okio:1.13.0'

S2.创建POST/GET请求:

   

S3.代码混淆

    -dontwarn okio.**

-dontwarn javax.annotation.Nullable

-dontwarn javax.annotation.ParametersAreNonnullByDefault

OKHTTP主要方法:

// 创建请求
MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=utf-8");
Request request = new Request.Builder()
                        .post(RequestBody.create(MEDIA_TYPE, json))
                        .url(url)
                        .build();
// 创建响应
Response response = client.newCall(request).execute();  // sync
Response response = client.newCall(request).enqueue(new Callback() { // async
                   @Override
                    public void onFailure(Call call, IOException e) {
                    }
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                    }
                });
// 获取结果
if (response.isSuccessful()) {
     response.body().string();
}
// 超时设置
// 提交JSON数据示例
    public static void postJsonExamAsync() {
        String url = "http:localhost:8080/login/commitUserInfo";
        String postJson = "{}";
        RequestBody body = RequestBody.create(MEDIA_TYPE, postJson);
        Request request = new Request.Builder()
                .url(url)
                .post(body)
                .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
                Headers responseHeaders = response.headers();
                for (int i = 0; i < responseHeaders.size(); i++) {
                    System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
                }
                System.out.println(response.body().string());
            }
        });
    }

  

参考文档:

    Github-okhttp link2

    Github文档-okio

    Android OkHttp完全解析 是时候来了解OkHttp了

    OkHttp使用教程

    


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM