从HttpURLConnection转换为Retrofit2问题

时间:2018-03-05 20:31:29

标签: java android retrofit2 gson

我正在升级一些从服务器获取数据的传统Android / Java代码。遗留代码使用HttpURLConnection并引入inputStream并将其转换为GZipInputStream。然后将结果转换为JSONObject。然后手动解析数据。这一切都很好,这意味着返回有效的json,因为它以'{'

开头

我正在尝试使用Retrofit2和GsonConverterFactory来升级此代码,以便我可以将json自动映射到Classes。

我收到错误:预计BEGIN_OBJECT但是第1行第1行STRING

这告诉我数据是作为字符串而不是JSON对象进入的。

注意:我正在为遗留代码和新的Retrofit实现发送相同的标题和查询参数 - 但结果不同 - 无法找出原因。

1 个答案:

答案 0 :(得分:0)

问题是服务器期望我的所有查询参数都在一个字段和名为“Object”的字段中,并且采用json格式,即:Object = {“field1”:“fieldOneValue”,“field2”: “fieldTwoValue”} AND必须是Url Uncoded Format:

@FormUrlEncoded
@POST("testing/myapi.api")
Observable<MyClass> getMyApiData(@Url String url,  @Field("Object") String object);