【问题标题】:Issue with String response in Retrofit改造中的字符串响应问题
【发布时间】:2015-10-22 05:46:13
【问题描述】:

我在我的 android 应用程序中使用 Retrofit 与我的服务器通信。在我的一个服务器调用中,我期待来自服务器的字符串响应。所以,我声明了一个回调,它需要一个字符串值。 Callback<String>。在 php 中,我回显了一个字符串。说echo "test"; 当我在浏览器中点击网址时,回显按预期工作test。但是在我的 android 应用程序中,调用了失败回调。 我尝试将 php 更改为 echo "\"test\""; 在浏览器上:"test" 在 android 上:调用成功回调。

我通过声明一个变量来解决它。 php:

$result = "test";
echo $result;

浏览器:test

Android : 调用成功回调。

我的问题是,Retrofit 是这样工作的吗?还是我做错了什么?另外,要解决这个问题,除了声明变量还有什么办法吗?

【问题讨论】:

    标签: php android retrofit


    【解决方案1】:

    Callback<String> 在改造方面没有多大意义。默认情况下,改造使用 GSON。

    您实际上在等待来自服务器的 json 反序列化为 POJO(简单的 java 对象)。

    假设您有一个数据模型 (POJO),例如:

    public class User {
        public final String name;
    }
    

    然后你会使用这样的回调Callback<User>。从服务器你应该这样做:echo '{ "name" : "Simon" }';

    在您的成功回调中,您将拥有一个名称字段设置为“Simon”的 User 类实例。

    更多信息在这里:http://square.github.io/retrofit/

    【讨论】:

    • 我完全同意你的看法。我仍然想知道.. echo "test"$result = "test"; echo $result; 之间有什么区别?使用前者时调用失败回调,使用后者时调用成功回调。
    • 问题是“test”实际上是有效的json。这是一个json字符串。而测试在 json 的上下文中什么都不是。
    猜你喜欢
    • 2016-10-02
    • 2019-08-27
    • 2020-03-22
    • 1970-01-01
    • 2017-04-05
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多