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

问题描述 投票:1回答:1

我有一个试图从.net调用的第三方Web服务(可能是一个Peoplesoft 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()

任何帮助,将不胜感激。

保罗

.net vb.net wcf wcf-client peoplesoft
1个回答
1
投票

今天,我在一位同事的帮助下以及对Google的一些深入研究中找到了答案。

基本上,peoplesoft WSDL的命名空间是: http : //xmlns.oracle.com/Enterprise/Tools/schemas/LSS_WEBORDER_RESP_MSG.v1但是,经过一番挖掘,我注意到响应上的命名空间有所不同: http : //peoplesoft.com/ LSS_WEBORDER_RESP_MSGR响应

所以我有两个选择。 1.在生成代理类之前,请在wsdl中更改名称空间。 2.修改reference.vb代理类以具有正确的名称空间。

我现在选择选项1。 我希望有更好的方法。

我从这里得到了一些帮助: http : //www.primordialcode.com/index.php/2008/10/15/invoking-javaaxis-web-service-net-return-null-issue/

© www.soinside.com 2019 - 2024. All rights reserved.