WCF客户端返回“nothing”作为对第三方Web服务的响应

时间:2010-07-08 12:32:43

标签: .net vb.net wcf wcf-client peoplesoft

我正在尝试从.net拨打第三方网络服务(碰巧是一个人民的EIP服务)。我已经尝试使用服务引用和旧的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 个答案:

答案 0 :(得分:1)

我今天在一位同事的帮助和深入的Google挖掘中找到了它。

peoplesows 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/