我正在与REST API集成,因此正在使用Retrofit.我需要点击的网址是:
http:// {{server}} / api / v1 / stuff / {{id}} /停用
我创建了一个实现API的接口:
@PUT("/api/v1/stuff/{id}/deactivate")
String deactivate(@Path("id") String id);
问题是当我调用该方法失败时,出现以下堆栈跟踪:
E/AndroidRuntime( 3046): Caused by: retrofit.converter.ConversionException: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 15
E/AndroidRuntime( 3046): at retrofit.converter.GsonConverter.fromBody(GsonConverter.java:67)
E/AndroidRuntime( 3046): at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:393)
E/AndroidRuntime( 3046): ... 11 more
E/AndroidRuntime( 3046): Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 15
E/AndroidRuntime( 3046): at com.google.gson.Gson.assertFullConsumption(Gson.java:779)
E/AndroidRuntime( 3046): at com.google.gson.Gson.fromJson(Gson.java:769)
E/AndroidRuntime( 3046): at retrofit.converter.GsonConverter.fromBody(GsonConverter.java:63)
E/AndroidRuntime( 3046): ... 12 more
E/AndroidRuntime( 3046): Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 15
E/AndroidRuntime( 3046): at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1505)
E/AndroidRuntime( 3046): at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1386)
E/AndroidRuntime( 3046): at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:531)
E/AndroidRuntime( 3046): at com.google.gson.stream.JsonReader.peek(JsonReader.java:414)
E/AndroidRuntime( 3046): at com.google.gson.Gson.assertFullConsumption(Gson.java:775)
E/AndroidRuntime( 3046): ... 14 more
我认为这是由于我没有在体内张贴任何东西引起的.解决此问题的最佳方法是什么?
注意:我已经成功使用POSTMan来调用API.
解决方法:
使用以下命令打开完整调试:
setLogLevel(RestAdapter.LogLevel.FULL)
并发现由于从服务器返回的格式错误的JSON而发生了Gson解析错误.我与服务器人员进行了“交谈”以解决问题.
对不起,空着身子的红鲱鱼发出了念头.我想我忘记了相关性并不表示因果关系.