okHttp

创建对象

OkHttpClient OK_HTTP_CLIENT = new OkHttpClient.Builder().build()

请求Requests(请求)

每一个HTTP请求中都应该包含一个URL,一个GET或POST方法以及Header或其他参数,当然还可以含特定内容类型的数据流。

Responses(响应)

 响应则包含一个回复代码(200代表成功,404代表未找到),Header和定制可选的body。

同步get请求

      public static void GetString(String url) {
        Request request = new Request.Builder().url(url).build();
        try {
            okhttp3.Response response = OK_HTTP_CLIENT.newCall(request).execute();
            if (response.isSuccessful()) {
                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());

            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

异步get

 public static void EnqueueGet(String url) {
        Request request = new Request.Builder().url(url).build();
        OK_HTTP_CLIENT.newCall(request).enqueue(new Callback() {
                                                    @Override
                                                    public void onFailure(Call call, IOException e) {

                                                    }

                                                    @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());

                                                    }
                                                }

        );
    }

添加请求头

 Request request = new Request.Builder().url(url)
                .header("User-Agent", "OkHttp Headers.java")
                .addHeader("Accept", "application/json; q=0.5")
                .addHeader("Accept", "application/vnd.github.v3+json")
                .build();

添加拦截器

///当有拦截器的时候,任务会先被发送到拦截器中,在通过拦截器往下传递
 private final static OkHttpClient OK_HTTP_CLIENT = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
        @Override
        public Response intercept(Chain chain) throws IOException {
            Request request = chain.request();
            Log.e("ljl", "请求地址====" + request.url());
            Headers headers = request.headers();
            RequestBody body = request.body();
            for (int i = 0; i < headers.size(); i++) {
                Log.e("ljl", headers.name(i) + "========" + headers.value(i));
            }
            return chain.proceed(request);
        }
    }).build();

postkey-value参数请求方式

    public static void PostString(String url, Map<String, String> params) {
        // RequestBody body = new MultipartBody.Builder().build();
        MultipartBody.Builder builder = new MultipartBody.Builder();
        for (String key : params.keySet()) {
            String val = params.get(key);
            try {
                builder.addFormDataPart(key, val);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        RequestBody body = builder.build();
        Request request = new Request.Builder().url(url)
                .post(body)
                .build();
        try {
            okhttp3.Response response = OK_HTTP_CLIENT.newCall(request).execute();
            if (response.isSuccessful()) {
                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());

            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

post 上传图片

 /**
     * @param url    请求地址
     * @param params 请求参数
     * @param list   上传图片的路径集合
     */
    public static void PostImage(String url, Map<String, String> params, List<String> list) {
        MultipartBody.Builder builder = new MultipartBody.Builder();
        for (String key : params.keySet()) {
            String val = params.get(key);
            try {
                builder.addFormDataPart(key, val);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        for (String path : list) {
            if (path != null) {
                File file = new File(path);
                builder.addFormDataPart("attachmentFile", file.getName(), RequestBody.create(MEDIA_TYPE_PNG, file));
            }
        }
        //构建请求体
        RequestBody requestBody = builder.build();
//构建请求
        Request request = new Request.Builder()
                .url(url)//地址
                .post(requestBody)//添加请求体
                .build();
        OK_HTTP_CLIENT.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                System.out.println(e.toString());
                Log.e("ljl", "errer====" + e.toString());
            }

            @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());
                Log.e("ljl", "数据信息==" + response.body().string());
            }
        });
    }

简单的使用就完成了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值