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步是异步请求,关于同步请求和异步请求的区别请看下篇文章

原文地址:https://www.cnblogs.com/hzcya1995/p/13302508.html