第一次无法从网络服务加载数据

时间:2018-11-03 15:58:50

标签: android retrofit okhttp

获取Facebook访问令牌后,我将其用于自己的Web服务器中登录。但是在第一次,日志文件中有警告,并且我无法从服务器加载数据,但是当我第二次打开应用程序时,它将正常加载。

以下是警告日志:

  

W / System.err:com.google.gson.JsonSyntaxException:   java.lang.IllegalStateException:应为BEGIN_OBJECT,但为STRING   在第1行第1列路径$ W / System.err:在   com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:224)   W / System.err:位于   retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:39)   W / System.err:位于   retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:27)   W / System.err:位于   retrofit2.ServiceMethod.toResponse(ServiceMethod.java:122)   W / System.err:位于   retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:217)W / System.err:   在retrofit2.OkHttpCall.execute(OkHttpCall.java:180)W / System.err:
  在   retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:42)W / System.err:at   io.reactivex.Observable.subscribe(Observable.java:12084)W / System.err:   在   retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)   W / System.err:位于   io.reactivex.Observable.subscribe(Observable.java:12084)W / System.err:   在   io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(ObservableSingleSingle.java:35)   W / System.err:位于io.reactivex.Single.subscribe(Single.java:3433)   W / System.err:位于   io.reactivex.internal.operators.single.SingleDoOnSuccess.subscribeActual(SingleDoOnSuccess.java:35)   W / System.err:位于io.reactivex.Single.subscribe(Single.java:3433)   W / System.err:位于   io.reactivex.internal.operators.single.SingleSubscribeOn $ SubscribeOnObserver.run(SingleSubscribeOn.java:89)   W / System.err:位于   io.reactivex.Scheduler $ DisposeTask.run(Scheduler.java:579)   W / System.err:位于   io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)   W / System.err:位于   io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)   W / System.err:位于   java.util.concurrent.FutureTask.run(FutureTask.java:266)W / System.err:   在   java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)   W / System.err:位于   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)   W / System.err:位于   java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:641)   W / System.err:位于java.lang.Thread.run(Thread.java:764)   W / System.err:原因:java.lang.IllegalStateException:预期   BEGIN_OBJECT,但位于第1行第1列路径$ W / System.err:
  在com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)   W / System.err:位于   com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:213)

可能是什么原因造成的?

1 个答案:

答案 0 :(得分:0)

该错误告诉您,当GSON尝试解析您所调用的Web服务返回的JSON时出现错误。特别是,GSON需要一个JSON对象,但是它接收到一个字符串(请参阅错误消息的第一行)。 如果错误仅在您第一次调用时发生,而不是第二次出现,则意味着Web服务返回2个不同的答案,并且GSON可以正确解析第二个答案,而不是第一个。

为了找出问题所在,您应该提供更多详细信息,例如数据模型和Web服务返回的2个响应。