这就是我的请求:
pictures
它应该返回ApiService apiService = retrofit.create(ApiService.class);
Observable<Response<UserUpdateResponse>> response = apiService.updateUser(Utils.getHeader(), object);
response.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(this::onSuccessUpdate,
this::onErr,
this::hideDialogLoading);
。但是当服务器响应任何代码201,202(任何不是200)时,它将会出错。
这是错误。
java.net.ProtocolException:HTTP 205的内容长度非零:121
那么我如何防止它出错,或者如何获得错误体?谢谢!。
答案 0 :(得分:2)
HTTP响应代码具有预定义的定义,并且一些具有必须满足的要求才被视为有效的HTTP有效负载。您无法重新定义这些代码对您的应用程序的意义,并期望良好实施的客户端接受它。
具体查看具有以下要求的HTTP 205 - Reset Content:
由于205状态代码意味着不会提供额外的内容,因此服务器不得在205响应中生成有效负载。
通常,应用程序只会为所有请求返回HTTP 200,并在有效负载中包含特定于应用程序的错误代码。你正在做的事情没有多大意义。
答案 1 :(得分:0)
所以从技术上讲,我可以得到答复2xx。问题是响应代码205中的服务器响应主体假定为空(https://tools.ietf.org/html/rfc7231#section-6.3.6)。因此,在服务器上将body设置为null之后,android side正常运行。