上下文:我必须调用externalService,它位于我们在AWS-EC2上托管的环境之外。此externalService要求在访问IP地址之前将其列入白名单。由于EC2主机IP地址不保证相同并且可以在替换主机时更改,因此我们决定通过代理服务器路由API调用。
我们也在为其他一些externalServices调用做同样的事情,但这些都是基于REST的,所以我们在使用rest-client或net / http调用API时没有遇到任何问题。
现在,这次它是一个SOAP服务,我们正在使用Savon来访问它。 我可以使用" curl"下载网址。在代理服务器主机上,但如果我从SavonClient通过代理服务器访问wsdl,它将失败。它给出403禁止错误。
irb(main):102:0* client = Savon.client do |variable|
irb(main):103:1* variable.proxy 'http://172.31.50.91:3128'
irb(main):104:1> variable.wsdl 'https://<some_url_here>'
irb(main):105:1> end
=> #<Savon::Client:……>>>
irb(main):106:0>
irb(main):107:0* client.operations
Net::HTTPServerException: 403 "Forbidden"
对于不需要IP白名单的其他服务,SavonClient可以使用,无论是否提供代理服务器地址。
任何帮助将不胜感激。我在这里被打了很久。
谢谢,