java 图片url以form-data方式上传

之所以想记录下来,主要是之前对这个不太熟,然后在网上找了大半天也没找到合适的,然后自己慢慢试了出来,比较囧。。。但分享给大家,亲测可用!

主要分为两步:
1. 将图片url转为二进制字符串;
2. 将二进制字符串以及其他字段一并上传。

直接上代码:

public class HttpClient {

    public static final OkHttpClient client =
            new OkHttpClient.Builder()
                    .connectTimeout(10, TimeUnit.SECONDS)
                    .readTimeout(10, TimeUnit.SECONDS)
                    .build();

    public static String getResponse(String url, String imgUrl) throws IOException {

        RequestBody fileBody = RequestBody.create(MediaType.parse("image/jpeg"), getFile(imgUrl));

        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("param1", param1)
                .addFormDataPart("param2", param2)
                .addFormDataPart("image", "image", fileBody)
                .build();

        Request request = new Request.Builder()
                .url(url)
                .post(requestBody)
                .build();
        Response response = client.newCall(request).execute();
        if (response.isSuccessful()) {

            return response.body().string();
        } else {

            throw new RuntimeException(response.body().string());
        }
    }

    private static byte[] getFile(String imgUrl) throws IOException {

        Request request = new Request.Builder()
                .url(imgUrl)
                .build();
        Response response = client.newCall(request).execute();
        if (response.isSuccessful()) {
            return response.body().bytes();
        } else {
            throw new RuntimeException(response);
        }
    }
}

其中OkHttpClient包请自行导入。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值