Я использую Retrofit в моем приложении для Android, чтобы общаться с моим сервером. Во время одного из моих вызовов к серверу я ожидаю ответа String от сервера. Итак, я объявляю обратный вызов, который ожидает строковое значение. Callback<String>
, В php я повторяю строку. Сказать echo "test";
Когда я нажимаю URL в браузере, эхо работает как положено test
, Но в моем приложении для Android вызывается сбой обратного вызова.
Я пытался изменить php на echo "\"test\"";
В браузере: "test"
На андроиде: успех называется обратным вызовом.
Я решил это, объявив переменную.
Php:
$result = "test";
echo $result;
Браузер: test
Android: успешный обратный вызов называется.
У меня вопрос: так работает Retrofit? Или я что-то не так делаю? Кроме того, чтобы решить это, есть ли другой способ, кроме объявления переменной?
Callback<String>
не имеет большого смысла в контексте модернизации. По умолчанию модификация работает с использованием GSON.
То, что вы на самом деле ожидаете от сервера, десериализуется с помощью json в POJO (простой объект Java).
Допустим, у вас есть модель данных (POJO), например:
public class User {
public final String name;
}
Тогда вы будете использовать обратный вызов, как это Callback<User>
, И с сервера вы должны сделать: echo '{ "name" : "Simon" }';
В вашем успешном обратном вызове у вас будет экземпляр класса User с полем имени, установленным в «Simon».
Подробнее об этом здесь: http://square.github.io/retrofit/
Других решений пока нет …