获取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)
可能是什么原因造成的?
答案 0 :(得分:0)
该错误告诉您,当GSON尝试解析您所调用的Web服务返回的JSON时出现错误。特别是,GSON需要一个JSON对象,但是它接收到一个字符串(请参阅错误消息的第一行)。 如果错误仅在您第一次调用时发生,而不是第二次出现,则意味着Web服务返回2个不同的答案,并且GSON可以正确解析第二个答案,而不是第一个。
为了找出问题所在,您应该提供更多详细信息,例如数据模型和Web服务返回的2个响应。