首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用和android注释设置标头

使用和android注释设置标头
EN

Stack Overflow用户
提问于 2012-08-19 21:36:49
回答 1查看 2.5K关注 0票数 4

我目前正在使用来与java支持的REST交互。实际上,我正在使用android注解向这个后端服务发送http调用,我必须说它很棒。基本上,Android注释允许您为服务调用定义一个接口,并为每个可用的api调用定义使用的http方法:它将生成与诸如编组/解编组之类的低级内容相关的所有锅炉板代码,并根据接口定义调用正确的http方法。

现在,我想为http请求设置一些头:我知道我只引用了定义所有调用的服务接口,我如何做到这一点?我也可以引用RestTemplate对象,但是现在似乎已经有了设置头的方法。

任何帮助都是非常感谢的

EN

回答 1

Stack Overflow用户

发布于 2012-09-14 08:30:23

我的方法是在应用程序类中创建一个ApiClient实例,并设置一个自定义REST模板。

在我的例子中,我使用Jackson进行JSON消息转换:

代码语言:javascript
代码运行次数:0
运行
复制
RestTemplate restTemplate = new RestTemplate(fac);
MappingJacksonHttpMessageConverter converter =
        new MappingJacksonHttpMessageConverter();
converter.getObjectMapper().configure(Feature.UNWRAP_ROOT_VALUE, true);
restTemplate
        .getMessageConverters()
        .add(converter);
mClient.setRestTemplate(restTemplate);

然后,我的请求工厂fac如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
ClientHttpRequestFactory fac = new HttpComponentsClientHttpRequestFactory() {

    @Override
    protected HttpUriRequest createHttpRequest(HttpMethod httpMethod, URI uri) {
        HttpUriRequest uriRequest = super.createHttpRequest(httpMethod, uri);
        // Add request headers
        uriRequest.addHeader(
                "Content-Type",
                MediaType.APPLICATION_JSON_VALUE);
        return uriRequest;
    }

    @Override
    public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod)
            throws IOException {
        if (Config.DEBUG_REQUESTS) {
            Log.d(TAG, uri);
        }
        return super.createRequest(uri, httpMethod);
    }

};

警告

虽然这在我们办公室的所有安卓设备上都有效,但是最近我发现头似乎没有添加到 all 设备中!--我不知道为什么(或者具体是哪种设备),但是我正在查找它,当我找到解析度时,我会尝试更新这个答案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12030209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档