CRest /如何配置为仅接受JSON响应

时间:2011-02-10 08:23:31

标签: java android rest

我正在使用CRest在Android上反序列化JSON流。我的第一步看起来很有希望。

要从服务器获取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 :(得分:0)

我担心当前版本没有任何简单的方法,但可以随时在issue tracker上打开请求。

干杯,

劳伦

答案 1 :(得分:0)

我遇到了类似的情况,我使用自定义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));

另一个选项是为自定义HttpClient实例的ClientPNames.DEFAULT_HEADERS设置默认参数。 详情可在http://hc.apache.org/httpcomponents-client-ga/tutorial/html/httpagent.html找到。