无法从服务器加载订单列表

时间:2017-12-16 10:10:06

标签: android api server

我正在使用Retrofit Library从服务器加载一些数据。从服务器加载一些数据时会产生麻烦。有时加载数据。有些时间没有加载并在日志中显示以下异常。我不明白现在该做什么。

例外:

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 2418 path $.data[2].run

我在这个java类中遇到错误 在线" return Observable.fromCallable(new Callable()" 并在线"返回call.execute();"。

public class APIExecutor

{

public static Observable<Response> call(final Call call)
{

    BackgroundThread bgThread = new BackgroundThread();
    bgThread.start();

    Handler bgHandler = new Handler(bgThread.getLooper());
    Observable<Response> observable = Observable.defer(new Func0<Observable<Response>>()
    {
        @Override
        public Observable<Response> call()
        {
            return Observable.fromCallable(new Callable<Response>() {
                @Override
                public Response call() throws Exception 
                {


                    return call.execute();
                }
            });
        }
    });

    return observable
            .subscribeOn(HandlerScheduler.from(bgHandler))
            .observeOn(AndroidSchedulers.mainThread());
}

}

1 个答案:

答案 0 :(得分:3)

您期望服务器中有一个Json对象,但您收到的是非Json响应。

您可以使用Postman测试您的API,或者在您的请求中添加HTTP Logger以查看您实际获得的内容。

我无法理解为什么你在这里使用自定义Observable。如果您正在使用Retrofit2和RxJava2,那么您应该使用RxJava2CallAdapterFactory直接从Retrofit本身接收Observable,以正确的方式使用它。

无论如何,我已经说过问题出在你的服务器响应上了。你必须以某种方式看到你实际从服务器获得的东西。