gpt4 book ai didi

java - 无法使用 Retrofit 获得 json 响应

转载 作者:行者123 更新时间:2023-12-01 21:56:06 25 4
gpt4 key购买 nike

我使用的是 Retrofit 1.9.0,并且尝试了以下代码来获取 json 格式的响应:

public void Execute(String email, String password, Callback<User> callback) {
final Callback<User> cb = callback;
RestAdapter restAdapter = buildRestAdapter();
System.out.println("Email " + email + " passowrd " + password);
User user = new User();
user.setEmail(email);
user.setPassword(password);
restAdapter.create(YutonAPI.class).postLogin(
user,
new Callback<User>() {
@Override
public void success(User user, Response response) {
System.out.println("succes");
System.out.println(response.getBody());
}

@Override
public void failure(RetrofitError error) {
System.out.println("error "+ error);
}
});
}

所以这行代码:

System.out.println(response.getBody());

应该给我一个 json 格式的响应,但是它不起作用,因为我得到以下输出:

链接:/image/pA642.png

这就是我的 json 格式响应应如下所示:

{
"user": {
"image": "https://www.gravatar.com/avatar/e0a190604dc3dd2ee7b66bb95c20ef7f?d=identicon&s=512"
"email": "a@hotmail.com"
"name": "a"
"id": "566dfac21043a31820bf1ae6"
} -
}

我已经在我发出发布请求的服务器上测试了它。您可以在下面看到它的屏幕截图:

链接:/image/XJPbA.png

最佳答案

这里的问题是 response.getBody() 返回一个 TypedInputStream 对象,您无法直接输出该对象,因为它不是 String.

要读取TypedInputStream,有几个选项,如发布于:Retrofit callback get response body ,最简单的是:

String body = new String(((TypedByteArray) response.getBody()).getBytes());

如果抛出以下错误:

java.lang.ClassCastException: retrofit.client.UrlConnectionClient$TypedInputStream cannot be cast to retrofit.mime.TypedByteArray

然后确保您设置 .setLogLevel(RestAdapter.LogLevel.FULL)在用于创建服务的 RestAdapter 上。

关于java - 无法使用 Retrofit 获得 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com