1

使用 cfhttp 标记时,我通过 cfhttpparam 包含正文 + 标头。

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

我需要一个临时 CFC,我可以将我的呼叫定向到进行测试,它将向我显示我正在发送的确切 XML。

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

我试过 getHttpRequestData() 但这个方法返回一个结构而不是我正在寻找的语法。


这个问题有一个类似的主题,但没有解决我的具体需求。 查看cfhttp请求

<!--- 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>
4

3 回答 3

3

You could use something like Fiddler or WireShark to examine the data stream. They are both free and EXTREMELY useful for debugging things like this.

于 2013-01-07T17:49:06.077 回答
0

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

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

于 2013-01-07T18:08:26.810 回答
0

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

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

<requestFlow>
 <handler type="log"/>
</requestFlow>
<responseFlow>
 <handler type="log"/>
</responseFlow>

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

于 2014-03-12T21:28:57.730 回答