我打电话给这样的服务器:
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)
我无法得到正在发生的事情的暗示。我不知道是否发生这种情况是因为服务器上的数据模型错误,这发生在我这边(客户端)。
答案 0 :(得分:-1)
尝试使用Postman app来测试您对服务器的HTTP请求,并确保您的请求正确并且您得到了正确的响应。 很难说出你的错误在哪里,因为你没有提供预期的HTTP请求模型(API文档)。