gpt4 book ai didi

android - Android 的 Spring : add get parameter to every request

转载 作者:行者123 更新时间:2023-11-29 20:47:11 25 4
gpt4 key购买 nike

我正在将 AndroidAnnotations 与 Spring for Android 结合使用。由于某些原因,API 在每个请求中都需要一个特定的查询字符串参数。所以我想通过拦截器添加它。

public class TestInterceptor implements ClientHttpRequestInterceptor {
@Override
public ClientHttpResponse intercept(HttpRequest httpRequest, byte[] bytes, ClientHttpRequestExecution clientHttpRequestExecution) throws IOException {

// how to safely add a constant querystring parameter to httpRequest here?
// e.g. http://myapi/test -> http://myapi/test?key=12345
// e.g. http://myapi/test?name=myname -> http://myapi/test?name=myname&key=12345

return clientHttpRequestExecution.execute(httpRequest, bytes);
}}

最佳答案

事实上,在我的例子中,拦截器是执行此操作的错误位置。因为我必须普遍应用它,并且在创建 HttpRequest 期间,我认为使用我自己的 RequestFactory 实现并覆盖 createHttpRequest 方法是更好的方法。

public class HttpRequestFactory extends HttpComponentsClientHttpRequestFactory {

@Override
protected HttpUriRequest createHttpRequest(HttpMethod httpMethod, URI uri) {
String url = uri.toString();
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
.queryParam("key", "1234");
URI newUri = builder.build().toUri();
return super.createHttpRequest(httpMethod, newUri);
}
}

并在我的休息客户端中使用这个请求工厂

_restClient.getRestTemplate().setRequestFactory(new HttpRequestFactory());

关于android - Android 的 Spring : add get parameter to every request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080610/

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