Android 如何使用MockWebServer在response.body().string()中触发IOException
我接到这个改装电话:Android 如何使用MockWebServer在response.body().string()中触发IOException,android,retrofit,okhttp,mockwebserver,Android,Retrofit,Okhttp,Mockwebserver,我接到这个改装电话: api.enqueue(new Callback<ResponseBody>() { @Override public void onFailure(Call<ResponseBody> call, Throwable t) { t.printStackTrace(); } @Override public void onResponse(Call<ResponseBody> c
api.enqueue(new Callback<ResponseBody>() {
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
if (response.isSuccessful()) { // 200 - 300
String responseBody = response.body().string();
...
}
} catch (IOException e) {
e.printStackTrace()
}
}
}
但这最终会导致失败
如何触发
IOException
private void responseBodyFail(Protocol expectedProtocol) throws IOException {
// Use a 2 MiB body so the disconnect won't happen until the client has read some data.
int responseBodySize = 2 * 1024 * 1024; // 2 MiB
server.enqueue(new MockResponse()
.setBody(new Buffer().write(new byte[responseBodySize]))
.setSocketPolicy(SocketPolicy.DISCONNECT_DURING_RESPONSE_BODY));
谢谢,但是不行。它仍然以“失败”告终。我认为连接应该是成功的,但我需要修改响应主体。这就是API。所以最好是用一个bug复制来做一个PR,然后归档一个bug。你说的“那就是API”是什么意思?你是说这是改装的问题吗?请进行复制测试并提交错误。
private void responseBodyFail(Protocol expectedProtocol) throws IOException {
// Use a 2 MiB body so the disconnect won't happen until the client has read some data.
int responseBodySize = 2 * 1024 * 1024; // 2 MiB
server.enqueue(new MockResponse()
.setBody(new Buffer().write(new byte[responseBodySize]))
.setSocketPolicy(SocketPolicy.DISCONNECT_DURING_RESPONSE_BODY));