2011-11-07 83 views
2

我創建了一個ColdFusion Web服務,但它返回的是WDDX而不是SOAP。我如何使它返回SOAP而不是WDDX?如何使ColdFusion Web服務返回SOAP而不是WDDX?

+0

也許我需要將我的複雜數據類型轉換爲xml? –

+0

取決於你想要返回的東西。如果XML足夠好,可以使用XML,因爲設置多個CFC只是爲了獲得正確的SOAP類型,這比較容易。如果您對生產者和消費者都有控制權,請使用JSON(超級簡單,但可能會在數字/整數/日期時發生意外的類型轉換)。 – Henry

+0

我只是服務提供者 - 我無法控制消費者。 –

回答

1

對於複雜的物體,您需要正確設置CFC。閱讀:Using ColdFusion components to define data types for web services

更新:或者,你可以創建你自己的對象與<cfxml>的XML表示,然後用returnType="xml"cffunction返回XML對象。

您可以查看冷箱的XMLConverter插件作爲將內置CF複合類型轉換爲XML的代碼示例。

+0

這會引發異常,因爲我的returntype很複雜。 –

+0

根據您的澄清編輯我的答案。 – Henry

+0

再次根據您的說明編輯我的答案。 – Henry

0

<cffunction>返回一個XML對象,並將「returnformat」參數設置爲「plain」。

<cffunction name="GetData" returntype="xml" returnformat="plain"> 
+0

不。我創建了一個Web服務,當我調用一個方法時,它返回我期望的數據,但在WDDX中,不是SOAP格式的XML。 –

+0

根據您的澄清編輯我的答案。 –

+0

但現在我必須將我的複雜類型重寫爲xml。 –

1

訪問=遠程的CFC方法應該返回肥皂,而不是WDDX。我相信我已經使用了這個功能多年。我懷疑的可能是內容類型是基於客戶的請求。我將下載Soap-UI並測試http://your.server/yourCFC.cfc?wsdl以查看SOAP-UI是否會將WDDX拋出。如果是這樣,我有點不知所措,但無論如何都要在這裏報告,我會再看一看。 如果皁UI看到一個適當的反應,看看它發送的報頭,並將它們與你正在做的請求(可能通過瀏覽器?)

您還可以使用Fiddler記錄皁UI交通並將其與任何其他請求源進行比較。

上面的http請求可能完全關閉,但它相對容易檢查,我認爲它響了。

您可能還想檢查您正在編寫的函數的返回類型。爲了讓CF生成一個很好的WSDL,它需要能夠從您要返回的CFC中提取元數據。

+0

是的,SOAPUI向我展示了我的WebService工作正常。我試圖直接在瀏覽器中調用它。 –

相關問題