2017-06-12 119 views
0

我们在我们的项目中使用okhttp v3.8.0。我们必须在https请求上专门为代理服务器添加自定义标头。问题是,当我设置“.header(”Something“,”FRR“)”时,标头也会在https请求上加密,所以它不会被代理服务器识别。我怎样才能做到这一点?我想在Initial方法中发送未加密的头文件。 这就是我把我的请求,代理服务器现在:Okhttp:在https请求中为代理服务器添加未加密的自定义标头

OK_HTTP_CLIENT = builder 
    .connectTimeout(60, TimeUnit.SECONDS) 
    .writeTimeout(60, TimeUnit.SECONDS) 
    .readTimeout(60, TimeUnit.SECONDS) 
    .cookieJar(cookieJar) 
    .retryOnConnectionFailure(true) 
    .proxy(proxy) 
    .proxyAuthenticator(proxyAuthenticatorMainAccount) 
    .build(); 

Request request = new Request.Builder() 
    .url(url) 
    .header("Something", "FRR") 
    .build(); 

Response response = OK_HTTP_CLIENT.newCall(request).execute(); 

There is screenshot here, explain what i want to achieve in more details

+0

@SLaks我只是编辑我的文章,并附上一张截图,解释我想实现更多细节,我想知道你是否可以看看它 –

+0

这可能是不可能的。 – SLaks

回答

0

这是不可能在目前OkHttp。正在跟踪here。如果对你很重要,请解释你的情况,我们会作出相应的回应。

+0

我们必须向代理服务器发送请求,并说明我们将用于该特定请求的国家/地区的IP地址,并且只有通过在请求中设置“国家/地区”标题才可能。正如我所说,它正在处理http请求,但在https请求上,代理服务器无法识别标头,因为它已针对目标加密。其他图书馆可以这样做吗?甚至通过HttpUrlConnection? –

+0

最简单的解决方法是在连接代理时分叉OkHttp并在RealConnection代码中添加标题。 –

相关问题