我正在使用Retrofit Library从服务器加载一些数据。从服务器加载一些数据时会产生麻烦。有时加载数据。有些时间没有加载并在日志中显示以下异常。我不明白现在该做什么。
例外:
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 2418 path $.data[2].run
我在Line“返回Observable.fromCallable(new Callable()”和行“return call.execute();”上的这个java类中收到错误。
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());
}
}
您期望服务器中有一个Json对象,但您收到的是非Json响应。
您可以使用Postman测试您的API,或者在您的请求中添加HTTP Logger以查看您实际获得的内容。
我不明白为什么你在这里使用自定义Observable。如果您正在使用Retrofit2和RxJava2,那么您应该使用RxJava2CallAdapterFactory直接从Retrofit本身接收Observable,以正确的方式使用它。
无论如何,正如我已经说过的问题是来自服务器的响应。你必须以某种方式看到你实际从服务器获得的东西。