之所以想記錄下來,主要是之前對這個不太熟,然後在網上找了大半天也沒找到合適的,然後自己慢慢試了出來,比較囧。。。但分享給大家,親測可用!
主要分爲兩步:
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包請自行導入。