【问题标题】:WCF client returns "nothing" as a response to a third party webserviceWCF 客户端返回“无”作为对第三方 Web 服务的响应
【发布时间】:2011-03-13 07:49:34
【问题描述】:

我尝试从 .net 调用第 3 方网络服务(恰好是 peoplesoft EIP 服务)。我尝试使用服务引用和旧的 Web 引用来调用此服务,每次调用它时,我都会从服务中得到“无”的响应。

我已经通过 SoapUI 运行了服务调用,它运行良好。我已经使用 Fiddler 捕获了网络流量,并注意到当我从 SoapUi 或 .Net 调用服务时,我从调用中得到了相同的结果 xml。所以这意味着电话正在工作。我已在 WCF 中打开跟踪和日志记录,但没有看到任何错误。它也不会抛出异常。

所以我的理论是 .net 很难将服务中的 xml 转换回 .net 对象。

这是我的代码的 sn-p:

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】:

    我今天在一位同事的帮助和一些深入的 Google 挖掘下找到了答案。

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

    【讨论】:

      猜你喜欢
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2014-07-27
      相关资源
      最近更新 更多