2013-01-07 327 views
1

當使用cfhttp標籤時,我通過cfhttpparam's包含body + header。如何確定在cfhttp SOAP請求中發送的確切XML?

由於Coldfusion在發送XML之前將XML融合在一起,所以我在另一端收到語法錯誤。

我需要一個臨時CFC,我可以將我的電話直接指向測試,這將顯示我正在發送的確切XML。

如何確定在cfhttp請求中發送的確切XML?

我試過getHttpRequestData(),但是這個方法返回一個結構而不是我要找的語法。


還有一個類似的線程來解決這個問題,但沒有解決我的具體需求。 View cfhttp request

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

回答

3

您可以使用類似FiddlerWireShark檢查數據流。它們都是免費的,對於調試這樣的事情極其有用。

+0

完全同意。提琴手對於這樣的活動至關重要。在使用HTTPS進行工作時,爲了讓CF與Fiddler交談,您必須做一些擺弄證書的工作,但這非常值得。作爲解決方法,請在cfhttp標記上設置proxy和proxyport屬性,並將URL更改爲任何非HTTPS URL,因爲您只想查看確切的請求數據。 – barnyr

+0

我如何「擺弄證書」讓Fiddler在Coldfusion上運行?我瀏覽過ColdFusion管理員,但無法找到需要完成的工作。 –

+0

與CF管理員無關。我相信@barnyr所指的是您需要將Fiddler證書導入Java證書密鑰庫,因爲您正在通過SSL進行通話。請參閱有關Fiddler如何使用SSL [解密受HTTPS保護的通信](http://www.fiddler2.com/Fiddler/help/httpsdecryption.asp)以及如何爲ColdFusion導入證書[導入證書 - ColdFusion](http: //helpx.adobe.com/coldfusion/kb/import-certificates-certificate-stores-coldfusion.html)。請記住,在更新證書庫後,您需要重新啓動ColdFusion。 –

0

方法1 - 將您的xml變量輸出到您的網頁瀏覽器。查看html源代碼。

方法2 - 將您的xml變量輸出到textarea中。

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-根} /logs/cfserver.log結束了。