我不知道这是错误,或者我做错了什么。
以下是我的okhttp
请求:
private static final MediaType MEDIA_TYPE_JPEG = MediaType.parse("image/jpeg");
protected void putImage(String path) throws IOException {
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(
Headers.of("Content-Disposition", "form-data; name=\"image\""),
RequestBody.create(MEDIA_TYPE_JPEG, new File(path)))
.build();
Request request = new Request.Builder()
.url("http://localhost:9090/")
.put(requestBody)
.build();
Timber.d(request.urlString());
okHttpClient.newCall(request).enqueue(new Callback() {
@Override public void onFailure(Request request, IOException e) {
e.printStackTrace();
}
@Override public void onResponse(Response response) throws IOException {
Timber.d(response.body().string());
}
});
}
时出错
我认为它只是后端代码有一个错误,但是,它适用于curl
:
curl -v -XPUT -include --form asdfasdf=@Photo_20140806_000942.jpg http://localhost:9090/
我的问题:
putImage
是否正确并与okhttp
对齐?curl
命令是否能够非常智能地运行?okhttp
会做我的后端代码应该处理的额外事情吗?答案 0 :(得分:0)
您可能需要指定文件名标头。尝试像这样设置Content-Disposition
:
Headers.of("Content-Disposition", "form-data; name=\"image\"; filename=\"Photo_20140806_000942.jpg\"")