C# Java Web服务的C解析响应
我正在从.Net应用程序调用Java WebLogic web服务。我已经向jws服务添加了一个服务引用 该服务可以很好地调用,并且我可以在Fiddler中看到响应,但是问题是,虽然我可以在响应的XML中看到保留列表,但Property listOfHolds是空的 这是打电话的代码C# Java Web服务的C解析响应,c#,java,web-services,C#,Java,Web Services,我正在从.Net应用程序调用Java WebLogic web服务。我已经向jws服务添加了一个服务引用 该服务可以很好地调用,并且我可以在Fiddler中看到响应,但是问题是,虽然我可以在响应的XML中看到保留列表,但Property listOfHolds是空的 这是打电话的代码 holdsList result = proxy.viewHoldsList(request.AccountNo); int noOfHolds = result.NumberOfHolds; // This va
holdsList result = proxy.viewHoldsList(request.AccountNo);
int noOfHolds = result.NumberOfHolds; // This value is read fine
object[] holds = result.listOfHolds; // This is coming as Null despite the values in the response
下面是Fiddler捕获的响应XML
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<work:WorkContext xmlns:work="http://oracle.com/weblogic/soap/workarea/">rO0...AAA</work:WorkContext>
</S:Header>
<S:Body>
<ns0:viewHoldsListResponse xmlns:ns0="http://www.openuri.org/">
<ns0:viewHoldsListResult>
<ns0:TotalAmount>130.0</ns0:TotalAmount>
<ns0:NumberOfHolds>4</ns0:NumberOfHolds>
<ns0:listOfHolds>
<ns0:item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns0:holdDetails">
<ns0:xsiType>HoldDetails</ns0:xsiType>
<ns0:Amount>100.0</ns0:Amount>
<ns0:StartDate>2014-02-15T00:00:00.0</ns0:StartDate>
<ns0:ExpiryDate>2014-02-20T00:00:00.0</ns0:ExpiryDate>
<ns0:Description>For testing</ns0:Description>
<ns0:Instruction/>
<ns0:Tracer>00000810000287294002</ns0:Tracer>
<ns0:HoldId>3591376655</ns0:HoldId>
<ns0:EmployeeId>0</ns0:EmployeeId>
</ns0:item>
<ns0:item xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns0:holdDetails">
<ns0:xsiType>HoldDetails</ns0:xsiType>
<ns0:Amount>10.0</ns0:Amount>
<ns0:StartDate>2014-02-15T00:00:00.0</ns0:StartDate>
<ns0:ExpiryDate>2014-02-17T00:00:00.0</ns0:ExpiryDate>
<ns0:Description>DESC</ns0:Description>
<ns0:Instruction/>
<ns0:Tracer>00000810000287294004</ns0:Tracer>
<ns0:HoldId>3591376656</ns0:HoldId>
<ns0:EmployeeId>0</ns0:EmployeeId>
</ns0:item>
</ns0:listOfHolds>
</ns0:viewHoldsListResult>
</ns0:viewHoldsListResponse>
</S:Body>
</S:Envelope>
我以前也遇到过类似的问题,问题是其中一个标记上缺少xmlns属性。在这种情况下,我怀疑标签下面有额外的HoldDetails标签
更新即使在web服务提供商删除了额外的标记之后,我也无法读取列表
我的问题是:
我可以在.Net代码中执行任何操作,以便获得listOfHolds的预期值吗?
我可以向JavaWeb服务的所有者提出任何更改建议吗?
[可选]为什么从响应中成功读取NumberOfHolds而不是从列表中读取?
web服务的供应商已进行了更改。他们将xsi:type=ns0:holdDetails更改为xsi:type=ns0:holdDetails H,而不是H
关键是Java,就我所知,与.Net不同的是,它们可以控制从web服务生成的XML。一些可能有用的链接&