我正在尝试使用WSO2 ESB 4.0.3访问外部Web服务(在Intranet之外),但我不知道如何配置代理以让请求到外面。我可以通过HTTP从我的基本Java客户端应用程序发送SOAP消息而不会出现问题;我可以使用Apache HttpComponents指定代理详细信息。所以,连接细节还可以。
我试过了:
修改<transportSender name="http" ... >
并指定"http.proxyHost"
和"http.proxyPort"
等参数。
设置全局参数<parameter name="Proxy"> ...
配置 HTTP传输发件人并指定相应的参数。
我得到的最好的是:
ERROR_CODE = 101503, ERROR_MESSAGE = Connection refused or failed for : ...
那么,我错了什么,我该怎么做呢?感谢。
答案 0 :(得分:3)
您的代理服务器是否有任何身份验证?如果是,并且它使用Basic Auth,则需要在发出请求之前指定后续属性..
<property name="Proxy-Authorization" expression="fn:concat('Basic', base64Encode('userName:password'))" scope="transport"/>
<property name="POST_TO_URI" value="true" scope="axis2"/>
第一个属性使用HTTP基本身份验证所期望的base64编码用户名和密码设置Proxy-Authorization HTTP传输头。
第二个属性使得外出URL成为Proxy Server可理解的完整URL。
以下是代理配置示例...
<proxy name="StockQuoteProxy" startOnLoad="true">
<target>
<inSequence>
<property name="Proxy-Authorization" expression="fn:concat('Basic ', base64Encode('udayanga:test123'))" scope="transport"/>
<property name="POST_TO_URI" value="true" scope="axis2"/>
<send>
<endpoint>
<address uri="http://www.wso2.com:9000/services/SimpleStockQuoteService"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<publishWSDL uri="file:repository/samples/resources/proxy/sample_proxy_1.wsdl"/>
</proxy>