浅析 - okHttp3使用总结

目录

okHttp

尊重每个人的付出,转载请点这里: http://blog.csdn.net/hanj456/article/details/52424733

注意事项:

  • okHttp3和之前的版本上相比较有些小改动,例如:
    FormEncodingBuilder 被替换成 FormBody ,MultipartBuilder 被替换成 RequestBody;
    okhttp使用MultipartBuilder,FormEncodingBuilder构建post消息体,最终构建出来的都是RequestBody,而okhttp3增加了RequestBody的子类,构造器放到了RequestBody的子类中,MultipartBody.Builder既可以添加表单数据,也可以添加文件等二进制数据

解析类型

MediaType.parse("image/png");  //图片类型
MediaType.parse("audio/mp3");  //音频类型
MediaType.parse("video/mp4");  //视频类型
MediaType.parse("text/x-markdown; charset=utf-8"); //markdown文本类型
MediaType.parse("application/json; charset=utf-8"); //Json数据类型

get请求登录

/**
 * get请求登录
 *
 * @param view
 */
public void getLogin(View view) {
    new Thread() {
        @Override
        public void run() {
            super.run();
            OkHttpClient client = new OkHttpClient();
            final Request request = new Request.Builder()
                    .url("http://10.0.2.2:8080/0903/LoginServlet?name=jack&pwd=123")
                    .build();
            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {

                }

                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    Log.i(TAG, "onResponse: "+response.body().string());
                }
            });
        }
    }.start();
}

get请求获取图片


    /**
     * get请求获取图片
     *
     * @param view
     */
    public void getImage(View view) {

        new Thread() {
            @Override
            public void run() {
                super.run();
                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder()
                        .url("http://10.0.2.2:8080/0903/tang3.jpg")
                        .build();
                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()){
                            //get the stream
                            InputStream is = response.body().byteStream();
                            //change the stream to bimap
                            Bitmap bitmap = BitmapFactory.decodeStream(is);
                            //new a file to save bitmap
                            File file = new File("/sdcard/tang3.jpg");
                            file.createNewFile();
                            FileOutputStream fos = new FileOutputStream(file);
                            bitmap.compress(Bitmap.CompressFormat.JPEG,100,fos);
                            fos.close();
                        }
                    }
                });

            }
        }.start();
    }

get请求获取文件

/**
     * get请求获取文件
     *
     * @param view
     */
    public void getFile(View view) {

        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url("http://10.0.2.2:8080/0903/okhttp-3.4.1.jar")
                .build();

        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()){
                    InputStream is = response.body().byteStream();
                    File file = new File("/sdcard/test.jar");
                    FileOutputStream fos = new FileOutputStream(file);
                    int len=0;
                    byte[] bytes = new byte[1024];
                    while ((len=is.read(bytes))!=-1){
                        fos.write(bytes,0,len);
                    }
                    is.close();
                    fos.close();
                }

            }
        });
    }

post请求登录

/**
     * post请求登录
     * @param view
     */
    public void postLogin(View view) {

        new Thread() {
            @Override
            public void run() {
                super.run();
                OkHttpClient client = new OkHttpClient();

                RequestBody formbody = new FormBody.Builder()
                        .add("name","jack")
                        .add("pwd","123")
                        .build();
                Request request = new Request.Builder()
                        .url("http://10.0.2.2:8080/0903/LoginServlet")
                        .post(formbody)
                        .build();
                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()){
                            Log.i(TAG, "result : "+response.body().string());
                        }else {
                            ...
                        }
                    }
                });
            }
        }.start();
    }

post请求上传图片

/**
     * post请求上传图片
     *
     * @param view
     */
    public void postImage(View view) {
        OkHttpClient client = new OkHttpClient();

        RequestBody fileBody = RequestBody
                .create(MediaType.parse("image/png"), new File("/sdcard/qiqiu.jpg"));
        RequestBody body = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("file", "pic.jpg", fileBody)
                .build();

        Request request = new Request.Builder().url("http://10.0.2.2:8080/0903/UploadServlet")
                .post(body).build();

        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()){
                   ...
                }else {
                   ...
                }
            }
        });

    }

post请求上传文件

 /**
     * post请求上传文件
     *
     * @param view
     */
    public void postFile(View view) {

        OkHttpClient client = new OkHttpClient();

        RequestBody fileBody = RequestBody
                .create(MediaType.parse("text/x-markdown; charset=utf-8"), new File("/sdcard/okHttp.md"));
        RequestBody body = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("file", "ok.md", fileBody)
                .build();
        Request request = new Request.Builder()
                .url("http://10.0.2.2:8080/0903/UploadServlet")
                .post(body).build();

        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()){
                    ...
                }else {
                    ...
                }
            }
        });
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Feign-OkHttp是一个依赖库,用于在Spring Boot项目中集成OkHttp。你可以通过在pom.xml文件中添加以下依赖来使用Feign-OkHttp: ```xml <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency> ``` 在项目中引入Feign-OkHttp后,它会自动配置OkHttpClient并进行初始化。通过在application.yml文件中设置feign.okhttp.enabled=true来启用Feign-OkHttp自动配置。 在Feign-OkHttp中,连接池相关的参数如最大空闲连接数和连接最大空闲时间可以在application.yml文件中的feign.httpclient.max-connections和feign.httpclient.time-to-live属性中进行配置。 另外,连接超时的设置是通过application.yml文件中的feign.httpclient.connection-timeout属性进行配置。 需要注意的是,feign.httpclient.connection-timeout只对OkHttpClient的初始化阶段起作用。实际处理HTTP URL请求时,主要依据feign.Request.Options中的connectTimeoutMillis和readTimeoutMillis参数。如果feign.Request.Options中的connectTimeoutMillis和readTimeoutMillis与OkHttpClient实例中的不一致,则以feign.Request.Options中的参数为准。 这就是如何在Spring Boot项目中使用Feign-OkHttp集成OkHttp的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Spring Cloud Open Feign系列【4】集成OkHttp及连接池配置详解](https://blog.csdn.net/qq_43437874/article/details/122169675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Feign 如何使用 Okhttp 完成 HTTP URL 请求](https://blog.csdn.net/yangchao1125/article/details/104492547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值