【发布时间】:2018-02-24 10:58:45
【问题描述】:
我正在使用 Retrofit2 向 Android 客户端发出请求。我的请求类型是 PUT,请求模型是:
public class BusinessStatus {
public enum STATUS
{
AVAILABLE, UNAVAILABLE
}
public STATUS status ;
public BusinessStatus(STATUS status) {
this.status = status;
}
}
我的改造api接口服务是:
public interface BusinessStatusApi {
@PUT("abul/{driverId}/abulass")
Observable<Response<Void>> updateBusinessStatus(@Path("driverId") String driverId, @Body BusinessStatus businessStatus);
}
我正在像这样从 Presenter 发出 PUT 请求:
public void updateAbulAssStatus(final String driverId, STATUS status) {
BusinessStatus businessStatus = new BusinessStatus(status);
Observable<Response<Void>> call = mBusinessStatusApi
.updateBusinessStatus(driverId, businessStatus);
Subscription subscription = call
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
response -> {
if (response.isSuccessful()) {
} else {
Toast.makeText(mContext.getApplicationContext(), "Something went wrong",
Toast.LENGTH_SHORT).show();
}
},
e -> {
if (e instanceof HttpException) {
ResponseBody responseBody = ((HttpException) e).response().errorBody();
Timber.d("ErrorMessage", responseBody);
}
},
() -> {
Timber.d("Status", "Completed");
}
);
}
但是一个不寻常的不必要的serialVersionUID被添加到请求正文并从后端API获得400。
这是我的 okhttp 日志:
PUT http://localgost:8080/v1/abul/10011/abulass http/1.1
09-15 14:55:01.394 12402-12578 D/OkHttp: Content-Type: application/json; charset=UTF-8
09-15 14:55:01.397 12402-12578/ D/OkHttp: Content-Length: 62
09-15 14:55:01.398 12402-12578/ D/OkHttp: {"status":"AVAILABLE","serialVersionUID":-1766960164825680704}
为什么尽管请求模型中没有包含不必要的serialVersionUID,但它却被添加到那里?
【问题讨论】:
标签: android rx-java retrofit2 okhttp