2015-07-30 2 views
0

Я использую «Модернизацию» в своем приложении Android для связи с моим сервером. В одном из моих серверных вызовов я ожидаю ответ String от сервера. Итак, я объявляю обратный вызов, который ожидает строковое значение. Callback<String>. В php я повторяю строку. Скажите echo "test"; Когда я нахожу URL-адрес в браузере, эхо работает как ожидалось test. Но в моем приложении для Android вызывается обратный вызов отказа. Я попытался сменить php на echo "\"test\""; В браузере: "test" На андроид: вызывается callback.Проблема со строковым ответом в дооснащении

Я решил это, объявив переменную. Php:

$result = "test"; 
echo $result; 

Browser: test

Android: успех обратного вызова вызывается.

Вопрос в том, является ли это, как работает Модернизация? Или я делаю что-то неправильно? Кроме того, чтобы решить это, есть способ, кроме объявления переменной?

ответ

0

Callback<String> не имеет большого смысла в контексте модернизации. По умолчанию модифицирование работает с использованием GSON.

Что вы на самом деле ожидаете от сервера: json deserialized в POJO (простой объект java).

Допустим, у вас есть модель данных (POJO), как:

public class User { 
    public final String name; 
} 

Тогда вы будете использовать обратный вызов, как этот Callback<User>. И с сервера вы должны сделать: echo '{ "name" : "Simon" }';

В вашем обратном вызове успеха у вас будет экземпляр класса User с полем имени, установленным в «Simon».

Подробнее об этом здесь: http://square.github.io/retrofit/

+0

Я полностью согласен с вами. Я все еще удивляюсь. В чем разница между тестами «echo» и «$ result =» test »; echo $ result; '? при использовании первого вызывается обратный вызов отказа, и при использовании последнего вызывается обратный вызов успеха. – Hemanth

+0

Проблема в том, что «тест» на самом деле действителен json. Это строка json. И тест ничто в контексте json. – VM4

Смежные вопросы