2010-07-08 66 views
1

我有一個第三方web服務(恰好是一個人EIP服務),我試圖從.net調用。我試過使用服務引用和舊的Web引用來調用此服務,每當我調用它時,我都會收到服務返回的「無」迴應。WCF客戶端返回「無」作爲對第三方web服務的響應

我已經通過SoapUI運行服務調用,它工作正常。我使用Fiddler捕獲了網絡流量,並注意到當我從SoapUi或.Net調用該服務時,我從呼叫中得到相同的結果xml。這意味着通話正在進行。我已經開啓了WCF中的跟蹤和日誌記錄功能,我沒有看到任何錯誤。它也不是拋出異常。

所以我的理論是.net很難將xml從服務轉換回.net對象。

這裏是我的代碼片段:

Dim psclient As New psService.LSS_WEBORDER_PortTypeClient 

Dim psreq As New psService.LSS_WEBORDER_REQ_MSG_TypeShape 
psreq = New psService.LSS_WEBORDER_REQ_MSG_TypeShape 

Dim orderinfo(1) As psService.Transaction_TypeShape 

Dim captureid As String = "WB" & Right(Guid.NewGuid.ToString, 8) 
orderinfo(0) = New psService.Transaction_TypeShape 
orderinfo(0).LSS_WEBOHDR_WRK = New psService.LSS_WEBOHDR_WRKMsgDataRecord_TypeShape 
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID = New psService.CAPTURE_ID_TypeShape 
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID.Value = captureid 

psreq.MsgData() = orderinfo 

Dim response As New psService.LSS_WEBORDER_RESP_MSG_TypeShape 
response = psclient.LSS_WEBORDER_OP(psreq) 
response.ToString() <-- this throws an exception because "response" is nothing. 
psclient.Close() 

任何幫助,將不勝感激。

保羅

回答

1

我今天想通了來自同事和一些深層次的挖掘谷歌的幫助不大。

基本上命名空間中的仁科WSDL不得不爲:http://xmlns.oracle.com/Enterprise/Tools/schemas/LSS_WEBORDER_RESP_MSG.v1 但一些挖後,我注意到在響應的命名空間是不同的:http://peoplesoft.com/LSS_WEBORDER_RESP_MSGResponse

所以,我有兩個選擇。 1.在生成我的代理類之前,在wsdl中更改命名空間。 2.修改reference.vb代理類以具有正確的名稱空間。

我現在選擇選項1。我希望有更好的方法。

我從這裏得到了一些幫助:http://www.primordialcode.com/index.php/2008/10/15/invoking-javaaxis-web-service-net-return-null-issue/