CRest / Как настроить прием только JSON ответа - PullRequest
0 голосов
/ 10 февраля 2011

Я использую CRest для десериализации потока JSON на Android.Мои первые шаги выглядят очень многообещающе.

Чтобы получить поток JSON с сервера, а не XML, я использую следующую конструкцию: (Accept: application/json)

@EndPoint("http://localhost:8080/myserver/rest")
@Param(name = "Accept", value = "application/json", dest = Destination.HEADER)
    public interface VersionService {

    @ConnectionTimeout(10000)
    @Path("/version")
    VersionTO getVersion();

}

Это работает, но этоНемного раздражает копировать «Param вещь» для каждого сервиса.Есть ли лучший способ настроить все Сервисы в одном месте только для возврата JSON?

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Я столкнулся с подобной ситуацией, когда использовал собственный HTTP-клиент.В вашем случае это может выглядеть следующим образом:

DefaultHttpClient client = new DefaultHttpClient();
client.addRequestInterceptor(new HttpRequestInterceptor() {
    public void process(HttpRequest request, HttpContext context) throws HttpException, IOException {
        request.addHeader("Accept", "application/json");
    }
});

CRestBuilder builder = new CRestBuilder();
builder.expectsJson();
builder.setRestService(new HttpClientRestService(client));

Другой вариант - установить параметр по умолчанию для ClientPNames.DEFAULT_HEADERS пользовательского экземпляра HttpClient.Подробности можно найти на http://hc.apache.org/httpcomponents-client-ga/tutorial/html/httpagent.html.

0 голосов
/ 10 февраля 2011

Что ж, боюсь, в текущей версии нет простого способа, но вы можете открыть запрос на трекере проблем .

Cheers,

Laurent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...