如何确定在cfhttp SOAP请求中发送的确切XML?

如何确定在cfhttp SOAP请求中发送的确切XML?,soap,coldfusion,cfhttp,Soap,Coldfusion,Cfhttp,当使用cfhttp标记时,我通过cfhttpparam包含body+头 由于Coldfusion在发送XML之前将其融合在一起的方式,我在另一端遇到了语法错误 我需要一个临时CFC,我可以直接调用它进行测试,它将显示我发送的确切XML 如何确定cfhttp请求中发送的确切XML? 我已经尝试过getHttpRequestData(),但是这个方法返回的是一个结构,而不是我要寻找的语法 这个问题有一个类似的线索,但没有解决我的具体需要。 我的用户 我的通行证 fsdf568sf234k 20

当使用cfhttp标记时,我通过cfhttpparam包含body+头

由于Coldfusion在发送XML之前将其融合在一起的方式,我在另一端遇到了语法错误

我需要一个临时CFC,我可以直接调用它进行测试,它将显示我发送的确切XML

如何确定cfhttp请求中发送的确切XML?

我已经尝试过getHttpRequestData(),但是这个方法返回的是一个结构,而不是我要寻找的语法


这个问题有一个类似的线索,但没有解决我的具体需要。


我的用户
我的通行证
fsdf568sf234k
2012-01-07T06:17:56Z

您可以使用类似或的内容来检查数据流。它们都是免费的,对于调试类似的东西非常有用。

方法1-将xml变量输出到web浏览器。查看html源代码


方法2-将xml变量输出到文本区域。

如果通过普通CF机制调用SOAP方法,则可以通过编辑文件{CF root}/wwwroot/WEB-INF/client-config.wsdd来启用完整的SOAP xml数据包日志记录

在元素中添加或启用以下行:



在我的机器上,日志记录在{cf root}/logs/cfserver.log中。

完全同意。小提琴手对于这样的活动是必不可少的。为了让CF在使用HTTPS时与Fiddler对话,您必须稍微修改证书,但这是非常值得的。作为一种解决方法,在cfhttp标记上设置代理和proxyport属性,并将URL更改为任何非HTTPS URL,因为您只对查看确切的请求数据感兴趣。如何“摆弄证书”让Fiddler使用Coldfusion运行?我已经查看了ColdFusion管理员,但找不到需要执行的操作。与CF管理员无关。我相信@barnyr所指的是需要将Fiddler证书导入Java证书密钥库,因为您是通过SSL进行讨论的。请参阅这篇关于Fiddler如何使用SSL的文章,以及这篇关于为ColdFusion导入证书的文章。请记住,更新证书存储后,您需要重新启动ColdFusion。旁注:为了安装Fiddler或Wireshark等软件,您需要对正在发送或接收数据的网络上的PC具有管理员权限。使用共享web主机的用户通常没有对其计算机的管理员访问权限。
<!--- Define Header --->
<cfsavecontent variable="soapHeader">
<cfoutput>
<soap:Header>
    <wsse:Security soap:mustUnderstand="1">
        <wsse:UsernameToken>
            <wsse:Username>MyUser</wsse:Username>
            <wsse:Password>MyPass</wsse:Password>
            <wsse:Nonce>fsdf568sf234k</wsse:Nonce> 
            <wsu:Created>2012-01-07T06:17:56Z</wsu:Created>
        </wsse:UsernameToken>
    <wsse:Security>
</soap:Header> 
</cfoutput>
</cfsavecontent>

<!--- Define Body --->
<cfsavecontent variable="soapBody">
<cfoutput>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   
    <soap:Body>
        <EmpCpsVerifyConnection xmlns="https://www.vis-dhs.com/EmployerWebService/" />
    </soap:Body>
</soap:Envelope>
</cfoutput>
</cfsavecontent>

<!--- Make SOAP Request --->
<cfhttp 
method="post"
url="https://stage.e-verify.uscis.gov/WebService/EmployerWebServiceV24.asmx?wsdl"
result="httpResponse">

<cfhttpparam
 type="header"
 name="SOAPAction"
    value="https://www.vis-dhs.com/EmployerWebService/EmpCpsVerifyConnection"
    />
<cfhttpparam
 type="header"
 name="Security"
    value="#trim( soapHeader )#"
    /> 
<cfhttpparam
type="body"
    value="#trim( soapBody )#"
    />
</cfhttp>
<requestFlow>
 <handler type="log"/>
</requestFlow>
<responseFlow>
 <handler type="log"/>
</responseFlow>