zoukankan      html  css  js  c++  java
  • android 使用OkHttpClient上传文件到服务器端

     1:创建一个OkHttpClient(发起请求的客户端)

            OkHttpClient.Builder builder = new OkHttpClient.Builder();//首先拿到创建者
            builder.connectTimeout(30, TimeUnit.SECONDS);
            builder.readTimeout(30, TimeUnit.SECONDS);
            OkHttpClient okHttpClient = builder.build();//由创建者创建OkHttpClient

    2:创建一个RequestBody(请求体:用于存放文件对象和别的参数)

           MultipartBody.Builder builder = new MultipartBody.Builder();//首先拿到创建者

           builder .setType(MediaType.parse("multipart/form-data"));//设置请求体类型
           File file = new File(文件路径);
           String fileType = getMimeType(file.getName());//根据文件的后缀名,获得文件类型
           builder.addFormDataPart("file",file.getName(),RequestBody.create(MediaType.parse(fileType), file));
           builder.addFormDataPart("description", 其他参数); 
           RequestBody requestBody = builder.build(); //由创建者创建RequestBody

    3:创建一个Request(请求对象:用于存放请求地址url和请求体RequestBody)

            Request.Builder builder = new Request.Builder();//首先拿到创建者
            builder.url(url)                                                       //设置请求地址
                    .method("POST", requestBody);               //设置requestBody

            //也可以这样写 :builder.url(url).post(requestBody)

          Request request = builder.build();//由创建者创建OkHttpClient

    4:创建Call(根据OkHttpClient和request创建call,call用于调用函数以发送请求)

         Call call = okHttpClient.newCall(request);

    5:用call调用函数以发送请求

    call.enqueue(失败的回调函数,成功的回调函数);

    注意:第5步是异步请求,关于同步请求和异步请求的区别请看下篇文章

  • 相关阅读:
    分布式事务解决方案1--使用Atomikos分布式事务(事务强一致方案)
    SringBoot集成Sharding-Jdbc 实践
    Sharding-Jdbc简介
    Mycat+haproxy中使用keepalived保障haproxy的高可用
    Angular CLI
    背压(Backpressure)机制
    Function.identity()
    解决Error: ENOENT: no such file or directory, scandir 安装node-sass报错
    Reactor flatMap
    Reactor map
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302508.html
Copyright © 2011-2022 走看看