gpt4 book ai didi

android - 使用 spring android resttemplate 和 android 注释设置标题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:52 26 4
gpt4 key购买 nike

我目前正在使用 Spring Android Resttemplate 与 java 支持的 REST API 进行交互。实际上,我正在使用 android annotations向此后端服务发送 http 调用,我必须说它很棒。基本上,Android 注释允许您为服务调用定义一个接口(interface),以及用于每个可用 api 调用的 http 方法:它将生成与低级内容相关的所有样板代码,如编码/解码,调用正确的根据接口(interface)定义的http方法。

现在,我想为 http 请求设置一些 header :如果知道我只有对定义所有调用的服务接口(interface)的引用,我该如何实现这一点?我也可以引用 RestTemplate 对象,但现在似乎有设置 header 的方法。

任何帮助将不胜感激谢谢

最佳答案

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

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

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 看起来像这样:

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);
}

};

警告

尽管这适用于我们办公室的所有 Android 设备,我最近发现标题似乎并未添加到所有设备!我不是确定这是为什么(或具体是哪些设备),但我正在调查它,并会在找到解决方案后尝试更新此答案。

关于android - 使用 spring android resttemplate 和 android 注释设置标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12030209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com