OKhttp3实现multipart/form-data上传

**

OKhttp3实现multipart/form-data上传 需要权限:

**

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>

file[]数组,多文件上传

public void uploadFiles(List<String> list) {

        OkHttpClient httpClient = new OkHttpClient();
        MediaType mediaType = MediaType.parse("application/octet-stream");//设置类型,类型为八位字节流
        //RequestBody requestBody = RequestBody.create(mediaType, file);//把文件与类型放入请求体
        MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM);

        builder.addFormDataPart("t", "123");//传递键值对参数
        builder.addFormDataPart("sk", "379fe678ddc271c677b642c6c0d801db");
        builder.addFormDataPart("userId", userId);
        builder.addFormDataPart("postBarId", "");
        builder.addFormDataPart("token", "");
        builder.addFormDataPart("title", "123");
        builder.addFormDataPart("content", "123");

        for (int i = 0; i < list.size(); i++) {
            File file = new File(list.get(i));
            builder.addFormDataPart("picFiles", file.getName(), RequestBody.create(MediaType.parse("application/octet-stream"), file));//文件名,请求体里的文件
        }

        Request request = new Request.Builder()
                .header("Authorization", "Bearer d3e63518-1ba7-4342-b94c-63c8b9b9046b")//添加请求头的身份认证Token
                .url(Config.update_PostBar)
                .post(builder.build())
                .build();

        Call call = httpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("TAG-失败:", e.toString() + "");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Log.e("TAG-成功:", string + "");

            }
        });
    }

file,单文件上传

public void uploadFile(String getPath,String url ) {
        File file = new File(getPath);//文件路径
        long size = file.length();//文件长度
        OkHttpClient httpClient = new OkHttpClient();
        MediaType mediaType = MediaType.parse("application/octet-stream");//设置类型,类型为八位字节流
        RequestBody requestBody = RequestBody.create(mediaType, file);//把文件与类型放入请求体

        MultipartBody multipartBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
            	 .addFormDataPart("id", 0 + "")//添加表单数据
            	.addFormDataPart("user", 1 + "")
                .addFormDataPart("file", file.getName(), requestBody)//文件名,请求体里的文件
                .build();

        Request request = new Request.Builder()
                .header("Authorization", "Bearer d3e63518-1ba7-4342-b94c-63c8b9b9046b")//添加请求头的身份认证Token
                .url(url)
                .post(multipartBody)
                .build();

        Call call = httpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("TAG-失败:", e.toString() + "");
            }

            @Override## 标题
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Log.e("TAG-成功:", string + "");
            }
        });
    }

上传JSON数据

private static void uploadingCallRecords() {
    new Thread() {
        @Override
        public void run() {
            MediaType JSON = MediaType.parse("application/json; charset=utf-8");
            JSONObject js = new JSONObject();
            //上传json,参数
            try {
                js.put("companyId", "1");
 
                js.put("id", "");
 
                js.put("phoneInNumber", "10086");
 
                js.put("phoneOutNumber","10086");
 
                js.put("phoneRecordAddress", "");
 
                js.put("phoneRingTime", "");
 
                js.put("phoneStartTime", "");
 
                js.put("phoneEndTime", "");
 
                js.put("phoneStatus", "0");
 
                js.put("phoneCallType","3");
 
                js.put("phoneClientType", 1);
 
                js.put("userId", "");
 
                js.put("uid", "");
 
            } catch (JSONException e) {
                e.printStackTrace();
            }
            //申明给服务端传递一个json串
            //创建一个OkHttpClient对象
            OkHttpClient okHttpClient = new OkHttpClient();
            //创建一个RequestBody(参数1:数据类型 参数2传递的json串)
            //json为String类型的json数据
            RequestBody requestBody = RequestBody.create(JSON, String.valueOf(js));
            //创建一个请求对象
            Request request = new Request.Builder()
                    .addHeader("Authorization", "这里放你的token")//身份验证的Token
                    .url("这里放你的url")//上传接口
                    .post(requestBody)
                    .build();
 
            okHttpClient.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    Log.e("TAG上传失败返回:", e.toString() + "");
                }
 
                @Override
                public void onResponse(Call call, Response response) throws IOException {
                    String string = response.body().string();
                    Log.e("TAG上传成功返回:", string + "");
                }
            });
        }
    }.start();
}
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值