[英]Can't get json response with 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格式的响应,但是它没有用,因为我得到以下输出:
链接: http : //i.imgur.com/mBQs1LL.png
因此,这就是我对json格式的响应的样子:
{
"user": {
"image": "https://www.gravatar.com/avatar/e0a190604dc3dd2ee7b66bb95c20ef7f?d=identicon&s=512"
"email": "a@hotmail.com"
"name": "a"
"id": "566dfac21043a31820bf1ae6"
} -
}
我已经在发出发布请求的服务器上对其进行了测试。 您可以在下面看到其屏幕截图:
这里的问题是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
然后,确保在用于创建服务的RestAdapter
上设置.setLogLevel(RestAdapter.LogLevel.FULL)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.