改造不通过 https 发送标头
Posted
技术标签:
【中文标题】改造不通过 https 发送标头【英文标题】:retrofit not sending the headers over https 【发布时间】:2020-04-26 05:10:42 【问题描述】:我一直在通过“HTTP”使用改造,并且工作正常,直到我切换到“HTTPS”突然服务器不再能够看到标头或改造无法发送它。
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor()
@Override
public Response intercept(Chain chain) throws IOException
Request newRequest = chain.request().newBuilder()
.addHeader(Constants.AccessTokenHeaderName, AccessToken)
.addHeader(Constants.ClientTokenHeaderName, Global.getClientToken())
.addHeader(Constants.AuthCodeHeaderName, Global.getAuthCode(context))
.build();
return chain.proceed(newRequest);
).connectTimeout(0, TimeUnit.SECONDS).build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
retrofitWithAuth = new Retrofit.Builder()
.client(client)
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson)).build();
【问题讨论】:
你能在 logcat 中看到你的日志吗?因为我们通过 https 发送它,所以它是一个实施错误而不是改造。 【参考方案1】:也许您错过了 protocols(Collections.singletonList(Protocol.HTTP_1_1))。 我以这种方式创建了 OkHttpClient:
private static OkHttpClient getNewClient()
Interceptor interceptor = new Interceptor()
@Override
public Response intercept(Chain chain) throws IOException
//todo
return null;
;
return new OkHttpClient.Builder()
.addInterceptor(interceptor)
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.protocols(Collections.singletonList(Protocol.HTTP_1_1)) // Disable HTTP/2 for interop with nginx 1.9.5.
.build();
【讨论】:
以上是关于改造不通过 https 发送标头的主要内容,如果未能解决你的问题,请参考以下文章
发送 PHP 标头时不显示通过 Htaccess 的自定义 405 错误消息
如何在 Alamofire Swift 的 POST 请求中添加标头参数(-H、-u、-X、-d)
当我在授权标头中发送有效的不记名令牌时,为啥我的 Spring-Cloud Gateway / OAuth2-Client 没有通过身份验证?