【发布时间】:2014-03-04 05:32:54
【问题描述】:
我正在与 REST API 集成,因此我正在使用 Retrofit。我需要点击的网址是:
http://{{server}}/api/v1/stuff/{{id}}/deactivate
我已经创建了一个实现 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。
【问题讨论】:
-
我无法重现这个。你能写一个小样本吗?这是我使用的:gist.github.com/JakeWharton/5a0b1608ec728aa21c27
-
感谢您回复@JakeWharton。我在周末发现这是 Web 服务没有将有效的 JSON 传递回客户端。很抱歉浪费了您的时间。