我在我的Android应用程序中使用okhttp改造来进行网络请求。在其中一个请求中,我收到以下错误:
com.google.gson.java.lang.IllegalStateException:预期BEGIN_OBJECT但在第1行列1路径$
我在日志中看到201响应,但Retrofit抛出此错误。下面是我的代码。
signup(signupParams, new Callback<Member>() {
@Override
public void success(Member member, Response response) {
if (member != null) {
UserAccount userAccount = new UserAccount(member);
userAccount.save();
}
@Override
public void failure(RetrofitError re) {
BusProvider.post(new SignupFailedEvent(re, email));
}
});
signupParams值为--
{"emailAddress":"test@gmail.com","password":"tester123","userSource":"APH"}
我已经用jsonLint测试了这个json,它是一个有效的json。这是我的成员类,理想情况下应该是响应。
public class Member {
public String emailAddress;
public String token;
public long id;
public String firstName;
public String lastName;
}
响应示例如下:
{
"emailAddress": "test@gmail.com",
"id": 1437811,
"token": "sdhshdghsdhhsdbcjhbsjdhc",
"firstName": "John",
"lastName": "Smith"
}
这就是原因。您的响应没有json格式。它可能包括with string或expected}。来确定这一点。您必须与邮递员核对,并将正文中的视图类型更改为HTML。在那里,您可以看到完整的响应,并可以使用*https://jsonlint.com/ . 否则,在动态json的情况下。您可以使用JsonElement作为响应。
如果您为成员类发布的源代码是准确的,那么您不会得到您认为正确的JSON响应。
错误消息意味着JSON解析器在它期望的复杂对象中找到了一个字符串。
由于成员类中没有任何复杂对象,因此结果可能不是有效的JSON(它不是以开头的花括号开始)。
尝试按照其中一条评论中的建议在Retrofit中打开详细日志记录,或者使用“Postman”等工具将相同的数据发布到API,看看实际结果是什么。
我看到这个问题很多次了,但还是不明白。看起来我在现场发送请求,但它的正文不正确。但为什么呢?可能我不清楚改造是如何工作的,但我不是只是收集请求的链接并等待服务器的答案吗?这是链接:这里 带有请求的接口 和带有基本URL的类 改装构建类 JSON是通过这个解析的 主要活动是: 日志: 那么,如果请求错误,我应该为正常工作更改什么?
我试图只获取字符串请求,但它的给定错误如下 我的API输出如下: 响应代码:
我必须使用Reform2创建/注册新用户我的服务器端是 我的模型课是 在职岗位为 将数据过帐为 我出错了 我找到了一些解决方案,并做出了相应的改变 但它也不起作用,同样的错误消息,如何解决这个错误。
从Android改型读取JSON字符串时出现问题。
我找到了一些解决方案,但我真的不知道如何开始。 这是我的密码。 接口 主要活动
我正在使用Retrofit和RxJava库并尝试解析此url: 我的代码如下。 APIInterface.java 主要活动。Java语言 我的模型课如下 大学生Java语言 我正在 D/错误:java。lang.IllegalStateException:应为BEGIN\u数组,但在日志的第1行第2列路径$处为BEGIN\u对象 我到处都在搜索这个错误,但找不到关于RxJava和改型的任何信息。