2012-11-26 186 views
2

我一直在編寫一個使用C#的客戶端,它使用第三方Web服務。我從他們那裏得到了一個wsdl,並且它所生成的引用大部分工作正常。然而,我遇到了一些問題,而運行該服務的好人卻沒有提供任何幫助。在C#客戶端捕獲SOAP消息

我推斷出找出問題的最有效方法是捕獲出站和入站SOAP消息,以便與設計文檔中顯示的原型進行比較。我知道,基於wsdl和現有Java應用程序的代碼(以及他們自己的示例),當我調用服務的方法時,我提供了正確的參數。如果我可以證明我發送服務的消息符合他們的原型,那麼我至少可以通過證明這是他們的錯誤,而不是我的錯誤,從而(有希望地)讓他們提供更新的文檔或修復服務。

我無法弄清楚的是如何在C#中設置這種類型的消息捕獲。我讀過一堆關於SoapExtension和WCF之類的東西,但這不是一個WCF應用程序,並且向app.config添加任何類型的日誌記錄信息在我運行該應用程序時似乎什麼也不做。我在網上找到的其他代碼示例都沒有工作。

我該如何解決這個問題?是否有必要嘗試將此客戶端轉換爲WCF平臺(以及如果我這樣做,創建控制檯界面和獨立GUI有什麼影響)?我應該嘗試創建一個從wsdl生成的類繼承的派生類,並從頭開始編寫捕獲代碼?我是否錯過某種方便的工具,可以爲我做這一切,而不需要我做一堆編碼?

任何幫助是極大的讚賞。

+0

http://stackoverflow.com/questions/11956204/httpwebrequest-not-sending-useragent –

回答

3

如果你想要做的是捕獲來自Web服務調用的原始數據,看看這個:

http://www.soapui.org/

我用它來測試所有的時間。

+1

+1:我認爲開發和測試基於Web服務的項目是絕對沒有價值的。 –

+0

謝謝。我剛剛安裝好了,這正是我需要的。 – Ant

3

我遇到了與使用基於PHP的SOAP服務的MVC3應用程序相同的問題。只需啓動Fiddler 2 http://www.fiddler2.com並讓它捕獲請求。 Fiddler捕獲您的計算機發出的每個HTTP和HTTPS請求。只需打開您的應用程序的調試器,以便您可以準確瞭解SOAP請求的製作時間並在Fiddler中觀看它。

+0

我也使用了fiddler,它在調試或驗證肥皂消息中的值時的作用就像一個魅力。 –