我有這個應用程序,我使用OkHttp RequestBody來執行與身體的網絡請求,但返回的內容長度是明顯錯誤的。由於問題的一個例子,有這樣的情況:OkHttp RequestBody返回錯誤的內容長度
public static RequestBody createNewTokenBody(final String redirectUri, final String
code,
final String clientId, final String
clientSecret) {
final byte[] requestBody = "bunchofcharsthatshouldgointhebody".getBytes(Charset.forName("UTF-8"));
final RequestBody ret = RequestBody.create(MediaType.parse(MEDIA_TYPE), requestBody, 0,
requestBody.length);
try {
Log.d("debug", "Request body length to return: " + ret.contentLength());
} catch (IOException e) {
e.printStackTrace();
}
return ret;
}
因此,這將打印「請求車身長度返回:33」。 然而,當該主體被附接到該請求到由下面的攔截器捕獲:
client.networkInterceptors().add(new Interceptor() {
@Override
public Response intercept(final Chain chain) throws IOException {
final Request request = chain.request();
final RequestBody body = request.body();
if (body != null) {
Log.d("debug", "REQUEST BODY LENGTH: " + body.contentLength());
}
return chain.proceed(request);
}
});
「REQUEST身長度:2」 被記錄代替,而不管指定我內容。毋庸置疑,由於身體未被完全閱讀,這完全無法滿足要求。有人知道這種行爲背後的原因嗎?
我鋼是-1 ...我使用編譯'com.squareup.okhttp:okhttp:2.4.0' –