Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用MockWebServer在response.body().string()中触发IOException_Android_Retrofit_Okhttp_Mockwebserver - Fatal编程技术网

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));