首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端:在设置自定义端点时强制使用HTTP

客户端:在设置自定义端点时强制使用HTTP
EN

Stack Overflow用户
提问于 2018-03-08 07:08:36
回答 1查看 348关注 0票数 0

我使用的是谷歌的LanguageServiceClient ( com.google.cloud:google-cloud-vision:1.16.0 )和ImageAnnotatorClient ( com.google.cloud:google-cloud-language:1.16.0 )。

它们用于在私有VPN中运行的项目。该公司的基础设施规定,访问外部服务必须通过转发代理完成。此外,VPN中的所有正向代理都必须在HTTP上,而不是HTTPS上。

所以我有一个前向代理xx.xx,所有像http://xx.xx.xx.xx/somePath这样的请求都被转发到https://language.googleapis.com/somePath。我用一些卷曲请求测试了这一点,它们的工作方式是正确的。

我已将端点更改如下:

代码语言:javascript
复制
LanguageServiceSettings serviceSettings = LanguageServiceSettings.newBuilder()
                .setEndpoint("xx.xx.xx.xx:80")
                //the default value of this is "language.googleapis.com:443"
                .build();
languageServiceClient = LanguageServiceClient.create(serviceSettings);

但是,客户机似乎正在通过HTTPS到达新的端点。我想不出该怎么制定这个计划。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-12 12:44:15

事实证明,即使在HTTPS上获得一个前向代理也是行不通的,因为库在看到SSL证书域(language.googleapis.com)和请求URL (前向代理IP)之间的不匹配时拒绝请求。

相反,我坚持HTTP代理并使其工作如下:

代码语言:javascript
复制
HttpHost proxy = new HttpHost("xx.xx.xx.xx", 80);

HttpTransportFactory transportFactory = () -> new ApacheHttpTransport.Builder()
                .setProxy(proxy)
                .build();

CredentialsProvider credentialsProvider = () -> GoogleCredentials.getApplicationDefault(transportFactory);

LanguageServiceSettings serviceSettings = LanguageServiceSettings.newBuilder()
                .setCredentialsProvider(credentialsProvider)
                .build();

LanguageServiceClient languageServiceClient = LanguageServiceClient.create(serviceSettings);

这就处理了第四步,但是,实际的请求仍在向language.googleapis.com提出。

这不能被类似地覆盖,因为请求是使用GRPC而不是Google发出的。据我所知,GRPC没有在代码中设置代理的任何规定。一种方法是设置这个环境变量:

代码语言:javascript
复制
export GRPC_PROXY_EXP=xx.xx.xx.xx:80

注意事项:

  • GRPC_PROXY_EXP变量将影响应用程序中使用GRPC的所有请求。
  • 您的代理必须支持连接请求才能使GRPC_PROXY_EXP变量工作。
  • 在编写这个答案时,/language为1.20.0,使用的是GRPC的1.9.0版本。这个版本的GRPC有一个错误,导致GRPC_PROXY_EXP不能正常工作。版本1.10.0也有相同的错误。唯一起作用的版本是1.9.1。必须遍历google的所有依赖项,对于找到的每个io.grpc:*:1.9.0包,向项目中添加一个依赖于1.9.1版本的包。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49167306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档