Gson gson = new Gson();
String json = gson.toJson(account);
System.out.println(json);
RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json);
p2PApi.createDepositAcct(body).enqueue(new Callback<Create>() {
@Override
public void onResponse(Call<Create> call, Response<Create> response) {
try {
System.out.println(response.code());
System.out.println(response.errorBody().string());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<Create> call, Throwable t) {
}
});
这是我的代码,响应成功,但是response.code()= 518,而且 响应消息在response.errorBody()中,reponse.body()为空。
为什么要响应518?
518的意思是什么?
答案 0 :(得分:2)
从Retrofit API doc
中可以看到https://square.github.io/retrofit/2.x/retrofit/
public T body()
成功回复的反序列化响应主体。
成功回应意味着什么?
public boolean isSuccessful()
如果code()在[200..300)范围内,则返回true。
错误体方法描述
public okhttp3.ResponseBody errorBody()
响应失败的原始响应正文。
不成功的响应意味着代码不在范围(200-300)内,这是isSuccessful()函数中的描述。
如果你的代码是518,那么消息绝对会出现在errorbody()
中有关HTTP状态代码的信息,通常可以参考此处 https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
5xx状态代码用于服务器错误,虽然我不知道错误到底是什么,但通常它应该是服务器端错误。
作为RFC7231,&#34; 6。响应状态代码&#34;说明。
status-code元素是三位整数代码给出 试图理解并满足请求的结果。
HTTP 状态代码是可扩展的。不需要HTTP客户端 了解所有已注册状态代码的含义,尽管如此 理解显然是可取的。但是,客户必须 了解任何状态代码的类,如第一个所示 数字,并将无法识别的状态代码视为等效 该类的x00状态代码,但a除外 收件人不得使用无法识别的状态代码缓存响应。
例如,如果a收到无法识别的状态代码471 客户端,客户端可以认为它有问题 请求并将响应视为已收到400(不良 请求)状态代码。响应消息通常包含一个 解释状态的表示。
通常情况下,状态代码是为某些常用用途预定义的,可以进行扩展。这意味着可以有一些像518这样的状态代码但是如果你在网上搜索没有确切含义(因为它是自定义的http状态代码)。但您可以将其视为服务器端错误之一(5xx错误)