当前位置: 首页 > 知识库问答 >
问题:

改装2.0-如何获得400个错误请求的响应体?

韦智刚
2023-03-14

因此,当我对服务器进行POST API调用时,我得到一个带有JSON响应的400 Bad Request错误。

{
    "userMessage": "Blah",
    "internalMessage": "Bad Request blah blah",
    "errorCode": 1
}

我管它叫

Call.enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
        //AA
    }

    @Override
    public void onFailure(Call<ResponseBody> call, Throwable t) {
        //BB
    }
}

然而,问题是,一旦我得到响应,就调用onFailure(),这样就调用了//bb。在这里,我无法访问JSON响应。当我记录api请求和响应时,它根本不显示JSON响应。而可抛出的t是IOException。然而,奇怪的是,当我对Postman进行相同的调用时,它确实返回了预期的带有400错误代码的JSON响应。

所以我的问题是,当我收到400个坏请求错误时,我如何获得json响应?我应该向OKHttpClient添加一些内容吗?

谢谢

共有1个答案

宇文修文
2023-03-14

您可以在onresponse方法中执行,记住400是响应状态而不是错误:

if (response.code() == 400) {              
    Log.v("Error code 400",response.errorBody().string());
}

并且您可以使用gson处理除200-300以外的任何响应代码,如下所示:

if (response.code() == 400) {
   Gson gson = new GsonBuilder().create();
   ErrorPojoClass mError=new ErrorPojoClass();
   try {
       mError= gson.fromJson(response.errorBody().string(),ErrorPojoClass.class);
       Toast.makeText(context, mError.getDescription(), Toast.LENGTH_LONG).show();
   } catch (IOException e) {
       // handle failure to read error
   }        
}

将此添加到build.gradle:编译'com.google.code.gson:gson:2.7'

 类似资料:
  • 我正试图通过改型2获得原始响应。0.2. 到目前为止,我试图使用以下代码行打印响应,但它打印的是地址,而不是确切的响应正文。 日志i(“原始消息”,response.body()。toString());

  • 我使用的是改装版2.0.0-beta1。 在测试中,我有一个替代方案,预计会出现错误HTTP 400 我想改装一下。回答 MyError没有反序列化-我只在这里看到它 但它没有给我MyError作为对象

  • 我使用的是改型2,我需要处理JSON格式的响应错误。下面是响应主体的示例。 包含有错误的字段列表,这意味着该值是动态的。因此,可能的解决方案之一是将响应体解析为JSON对象。我尝试使用 不幸的是,打印我只能得到以下结果

  • 我们的控制器看起来像这样- 在这里,如果我们没有在请求中指定所需的参数“testCode”,我们会得到“400 Bad request”,但错误响应的消息部分仍然为空。 我们得到的回应- 但预期是- 我们在下面使用Spring依赖项- 我看到的是,为此我们得到了MissingServletRequest estParameterException,但在异常中消息为空白("")。

  • 这是我用于网络调用的函数。 接口类 收到400个错误请求。 错误日志 任何帮助都将不胜感激。

  • 我有以下WCF服务操作: 我可以通过导航到服务在浏览器中加载WSDL。但是,当我在Jmeter中向同一服务发送“SOAP/XML-RPC请求”时,我收到了响应代码-400-错误请求。 以下是我正在使用的Soap消息: