我试图在我的Android应用程序上使用okhttp lib将PNG文件发送到服务器。服务器返回411代码,响应消息是"需要长度"。 我的代码:
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addPart(
Headers.of("Content-Disposition", "form-data; name=\"sendto\""),
RequestBody.create(null, sendtoJsonStr))
.addPart(
Headers.of("Content-Disposition", "form-data; name=\"picture\""),
RequestBody.create(MEDIA_TYPE_PNG, new File(filePath)))
.build();
long l = requestBody.contentLength();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.addHeader("Authorization","Token "+ UserLogin.getInstance().getLoginToken())
.build();
Response response = mClient.newCall(request).execute();
我试过使用okhttp lib RequestBody类的contentLength()函数,但是没有用。
任何人都可以帮助我吗?感谢。
答案 0 :(得分:1)
此问题已在this issue中修复,并已合并为master。您可以等待OkHttp的2.1版本或克隆repo并自己构建2.1-SNAPSHOT JAR。
答案 1 :(得分:0)
在这里您创建了一个自定义Request主体,因此您必须覆盖内容长度方法并设置其值,否则内容长度将取为-1。