• 23.1、Android -- OkHttp3请求的数据格式-文件上传


    OkHttp 请求数据类型

    数据类型可参考https://www.runoob.com/http/http-content-type.html

    示例1、文件上传

    1、准备上传文件(练习直接指定)

    File file1 = new File("D:\\1.txt");
    
    • 1

    2、文件上传Builder
    上传使用 MultipartBody
    上传文件addFormDataPart(name: String, filename: String?, body: RequestBody)
    第一个参数:文件标识(我的理解是上传后的名称)
    第二个参数:上传文件的本地名,或者说是实际名称
    第三个参数:文件/数据的类型(可以参考上面的地址,找对应类型)
    3、OkHttp的基本请求
    这个和之前都差不多,多了一个MultipartBody 传进请求中,通过post(multipartBody)
    文件上传代码示例

        public void UpLoadFile() {
            File file1 = new File("D:\\1.txt");
            
            MultipartBody multipartBody = new MultipartBody.Builder()
                    .addFormDataPart("file", file1.getName(), RequestBody.create(file1, MediaType.parse("text/plain")))
                    .addFormDataPart("a","test")
                    .build();
            OkHttpClient okHttpClient = new OkHttpClient();
            Request request = new Request.Builder().url("http://www.httpbin.org/post")
                    .post(multipartBody)
                    .build();
            Call call = okHttpClient.newCall(request);
            try {
                Response response =call.execute();
                System.out.println(response.body().string());
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    示例2、上传JSON

    1、准备请求主体内容,通过RequestBody

    RequestBody requestBody = RequestBody.create("{\"a\":1,\"b\":2}", MediaType.parse("application/json"));
    
    • 1

    一看就知道,RequestBody.create的参数,第一参数:数据内容(json串),第二个参数:数据类型
    2、OkHttp的基本请求

    public void SendJson() {
            RequestBody requestBody = RequestBody.create("{\"a\":1,\"b\":2}", MediaType.parse("application/json"));
            OkHttpClient okHttpClient = new OkHttpClient();
            Request request = new Request.Builder().url("http://www.httpbin.org/post")
                    .post(requestBody)
                    .build();
            Call call = okHttpClient.newCall(request);
            Response response = null;
            try {
                response = call.execute();
                System.out.println(response.body().string());
            } catch (IOException e) {
                e.printStackTrace();
            }
            
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    记忆知识点

    1、文件上传

    MultipartBody multipartBody = new MultipartBody.Builder()
                    .addFormDataPart("file", file1.getName(), RequestBody.create(file1, MediaType.parse("text/plain")))
                    .addFormDataPart("a","test")
                    .build();
    
    • 1
    • 2
    • 3
    • 4

    2、数据上传

     RequestBody requestBody = RequestBody.create("{\"a\":1,\"b\":2}", MediaType.parse("application/json"));
    
    • 1

    3、okHttpClient的基础应用

  • 相关阅读:
    Ingress Nginx 接连披露高危安全漏洞,是否有更好的选择?
    《统计学习方法》第四章总结与习题
    王道链表综合题(中)
    主流压力测试工具推荐
    基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能(五)
    第二章 进程与线程 五、线程(概念)
    使用 Webpack 从 0 到 1 构建 Vue3 项目 + ts
    服务器流量只有1tb,害怕被刷怎办,这篇文章教你防止对方刷流量!
    EdgeX Foundry 边缘物联网中间件平台
    Linux编译宏BUILD_BUG_ON_ZERO
  • 原文地址:https://blog.csdn.net/u013059089/article/details/126065295