改造400错误

时间:2017-03-27 22:02:18

标签: android request retrofit

我打电话给这样的服务器:

   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)

我无法得到正在发生的事情的暗示。我不知道是否发生这种情况是因为服务器上的数据模型错误,这发生在我这边(客户端)。

1 个答案:

答案 0 :(得分:-1)

尝试使用Postman app来测试您对服务器的HTTP请求,并确保您的请求正确并且您得到了正确的响应。 很难说出你的错误在哪里,因为你没有提供预期的HTTP请求模型(API文档)。