我正在调用一个服务器,如下所示:
public void startModelFor(final AnotherModel anotherModel) {
if (selectedConsumer == null) {
getView().showNoConsumerError();
} else {
getView().setLoading();
mApi.createModel(mManager.load(), selectedConsumer, ORDER_TYPE_TO_GO)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<MyModel>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
String str = e.getMessage();
Log.e("ERROR", "MESSSAGE: "+e.getMessage());
StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter( writer );
e.printStackTrace( printWriter );
printWriter.flush();
String stackTrace = writer.toString();
//getView().showErrorOnCreateOrder();
}
@Override
public void onNext(MyModel model) {
getView().goToOrderMenu(anotherModel, model);
}
});
}
}只是为了填充一个MyModel对象。每次发出请求时,我都会收到400错误消息。MyModel对象的结构没有改变,也就是说,方法的任何字段都没有添加到类中。被调用的createModel方法是一个PUT调用。下面是错误的堆栈跟踪。
retrofit.RetrofitError: 400 Bad Request
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:388)
at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
at retrofit.RestAdapter$RestHandler$1.invoke(RestAdapter.java:265)
at retrofit.RxSupport$2.run(RxSupport.java:55)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at retrofit.Platform$Android$2$1.run(Platform.java:142)
at java.lang.Thread.run(Thread.java:841)我一点也不知道发生了什么事。我不知道这是否因为服务器上的数据模型错误而发生,这发生在我这边(客户端)。
发布于 2017-03-28 08:48:16
尝试使用Postman app来测试您对服务器的超文本传输协议请求,并确保您的请求是正确的,并且您得到了正确的响应。很难说您的错误出在哪里,因为您没有提供预期HTTP请求的模型(API文档)。
https://stackoverflow.com/questions/43057217
复制相似问题