将WSS4CF与<cfhttp> </cfhttp>一起使用

时间:2012-08-07 00:19:57

标签: soap coldfusion

这有点紧张,我希望有WSS4CF经验的人能够确切知道我的目的。

我们正在尝试访问远程Web服务,要求使用用户名/密码的WS Security。在使用SOAP + <cfhttp>并遇到课堂问题之后,我的同事建议我看一下WSS4CF。这似乎正是我需要避免需要处理那些额外的jar文件等。

没有提供示例,我注意到cfc(view here)似乎被配置为使用类似dotNet SOAP服务的东西,你只需要用参数调用一个方法,例如

<cfinvoke 
            webservice="https://service.gov.au/OrgService.svc?WSDL" 
            refreshwsdl="true"
            method="Search"
            returnvariable="aSearch">
                <cfinvokeargument name="request" value="#arguments.sXML#"/>
        </cfinvoke>

WSS4CF首先创建一个安全的Web服务,然后在该安全环境中发出请求。我尝试了上面的代码,它不起作用(没想到)。该服务期望xml数据包,而不是带参数的方法调用。

我需要将其配置为与cfhttp一起使用,我们在cfhttpparam中传递一个xml信封,例如:如下:

<cfhttp
    url="/service.gov.au/OrgService.svc?WSDL"
    method="post">

    <cfhttpparam type="header" name="content-type" value="application/soap+xml" /><!---text/xml--->
    <cfhttpparam type="header" name="SOAPAction" value="http://service.gov.au/services/IOrgService/Search"/>
    <cfhttpparam type="header" name="accept-encoding" value="no-compression" />
    <cfhttpparam type="xml" value="#trim(sXML)#"/>

</cfhttp> 

任何帮助这样做将不胜感激。除非他们感兴趣,否则我不希望人们去研究图书馆。更希望能与WSS4CF合作的人能够提供一些灵感。

1 个答案:

答案 0 :(得分:0)

虽然它本身并没有使用WS-Security,但the answer here可以帮助您完成所需的工作,假设您可以在邮件头中发送WS-Security数据包(维基百科向您保证可以)。在该方法中,您使用cfinvoke,但添加一个标头,在您的情况下将是ws-security标头。你仍然需要自己组装标题,但我认为这是可能的