如何配置WSO2 ESB 4.0.3以使用公司代理访问外部Web服务(通过HTTP)

时间:2012-02-16 12:27:35

标签: web-services proxy wso2 wso2esb esb

我正在尝试使用WSO2 ESB 4.0.3访问外部Web服务(在Intranet之外),但我不知道如何配置代理以让请求到外面。我可以通过HTTP从我的基本Java客户端应用程序发送SOAP消息而不会出现问题;我可以使用Apache HttpComponents指定代理详细信息。所以,连接细节还可以。

我试过了:

  1. 修改<transportSender name="http" ... >并指定"http.proxyHost""http.proxyPort"等参数。

  2. 设置全局参数<parameter name="Proxy"> ...

  3. 配置 HTTP传输发件人并指定相应的参数。

  4. 我得到的最好的是:

     ERROR_CODE = 101503, ERROR_MESSAGE = Connection refused or failed for : ...
    

    那么,我错了什么,我该怎么做呢?感谢。

1 个答案:

答案 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>