因此,当我对服务器进行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添加一些内容吗?
谢谢
您可以在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消息: