2011-11-15 54 views
4

我試圖動態修改SOAP請求中的XML數據給ASMX服務。使用GetWebRequest修改SOAP請求

爲了讀取和修改RequestStream包含的XML數據,我在SoapHttpClientProtocol類中重寫了GetWebRequest()方法。

問題是,請求似乎是空的,其中沒有任何數據。這是因爲SOAP數據還沒有生成和序列化,或者我做錯了什麼?

+1

最有可能的是,你有沒有嘗試覆蓋[GetWebResponse](http://msdn.microsoft.com/en-us/library/8415zzb7.aspx)呢? – Justin

+0

不,它是GetWebRequest。也許我對這個方法的理解是有缺陷的,但是......它有可能發生在實際的SOAP數據設置之前嗎?它肯定會是這樣。 – Vex

+2

我對文檔的解釋是,GetWebRequest會返回一個空的Web請求(對於給定的URL)來填充。然後調用GetWebResponse方法,以便在請求對象已經被SOAP請求體「填充」之後獲得實際的響應,所以這將是修改它的地方。 – Justin

回答

2

你需要的是一個SoapExtension。你可以在ProcessMessage中登錄SoapMessageStage.AfterSerialize階段修改你的肥皂信息。在過去,我無法添加對Microsoft WSE庫的依賴(因爲它不適用於Mono),所以我在過去添加了WSSE頭文件。

完整的教程在這裏:http://msdn.microsoft.com/en-us/magazine/cc164007.aspx

GetWebRequest是你的目的太早,GetWebResponse是爲時已晚。