【问题标题】:Can't get json response with Retrofit无法通过改造获得 json 响应
【发布时间】:2015-12-13 23:27:36
【问题描述】:

我正在使用改造 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"
    } -
}

我已经在我发出发布请求的服务器上对其进行了测试。下面你可以看到它的截图:

链接:http://i.imgur.com/PtEMR12.png

【问题讨论】:

    标签: java android json post retrofit


    【解决方案1】:

    这里的问题是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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多