如何通过改造发布数据并以正确的格式获得响应?
Posted
技术标签:
【中文标题】如何通过改造发布数据并以正确的格式获得响应?【英文标题】:How to POST data with retrofit and get the response in proper format? 【发布时间】:2019-06-15 18:21:01 【问题描述】:我遇到了异常
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 2 column 1 path $
当调用 POST 请求时。
根据this 的回答,我的 json 响应确实有花括号 。
首先我的 json 响应是-
"status":
"status": "1",
"message": "Entry inserted successfully"
,
"data":
"date": "24-Mar-2226",
"month": "March",
"party_name": "mark"
然后我将两个单独的对象组合在一个响应对象中-
"response":
"status":
"status": "1",
"message": "Entry inserted successfully"
,
"data":
"date": "24-Mar-2226",
"month": "March",
"party_name": "mark"
但我仍然遇到同样的错误。
带有改造的 GET 请求工作正常,但不是 POST 请求。
这是我的 POST 查询-
@POST("AddEntry")
Call<ResponseClass> addMyEntry(@Body DetailsClass details);
【问题讨论】:
我在问题中添加了邮递员的 json 响应 sry 我想看看您在详细信息中发送的内容记录该详细信息 请贴出响应的代码 对不起,我不明白你想要什么@Ashish 【参考方案1】:异常表示您使用 String 类型标记的属性,但在 JSON 中它是一个对象。
使用 JSON 是:
"response":
"status":
"status": "1",
"message": "Entry inserted successfully"
,
"data":
"date": "24-Mar-2226",
"month": "March",
"party_name": "mark"
你应该有一些类如下:
public class Response
@SerializedName("status")
public Status status;
@SerializedName("data")
public Data data;
public class Status
@SerializedName("status")
public String status;
@SerializedName("message")
public String message;
public class Data
@SerializedName("date")
public String date;
@SerializedName("month")
public String month;
@SerializedName("party_name")
public String party_name;
【讨论】:
我确实有相同的课程 我尝试过清理和重建项目以及使缓存无效/重新启动,但没有奏效。【参考方案2】:请使用下面的类结构。
这个问题对于大多数只了解结构并继续前进的开发人员来说很常见。
public class ResponseData
@SerializedName("response")
public Response response;
public class Response
@SerializedName("status")
public Status status;
@SerializedName("data")
public Data data;
public class Status
@SerializedName("status")
public String status;
@SerializedName("message")
public String message;
public class Data
@SerializedName("date")
public String date;
@SerializedName("month")
public String month;
@SerializedName("party_name")
public String party_name;
【讨论】:
以上是关于如何通过改造发布数据并以正确的格式获得响应?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JSON 格式解析通过 AFNetworking 1.0 获得的响应
如何在不使用 GSON 或 android 中的任何其他库的情况下使用改造以字符串形式获得响应 [重复]