我接近它的方法是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 设备,但我最近发现似乎并非所有设备都添加了标题!我不确定这是为什么(或具体是哪些设备),但我正在研究它,并在找到解决方案后尝试更新此答案。