.Net调用Java Webservice,我需要将XMLSchema / long转换为anXMLSoap / long

时间:2011-09-29 18:57:24

标签: java .net web-services soap interop

我正在使用C#和.net 4,我正在尝试使用java webservice。我的代码是通过添加.net 2.0样式的webservice引用自动生成的。我相信.net发送到java webservice的类型存在问题,这是我尝试连接时收到的异常:

Internal Server Error (deserialization error: deserialization error: unexpected element type: expected={http://schemas.xmlsoap.org/soap/encoding/}long, actual={http://www.w3.org/2001/XMLSchema}long)

来自网络服务的旧文档: 将对象序列化为SOAP消息时,Microsoft .NET平台将所有原语映射到W3C XML 模式类型。这与.NET平台无法区分原语和原语有关 包装器(通过自动装箱)在使用时会导致与Sun One Web服务的互操作性问题 编码的RPC SOAP消息。 在Java编程语言中,原语及其等效的对象包装器不能自动装箱 因此在语言上有所区别。 在Sun One下生成和部署Web服务时,服务器端WSDL映射Java W3C模式类型的原语,并将Java对象映射到SOAP模式类型。

有谁知道如何告诉.net发送http://schemas.xmlsoap.org/soap/encoding/}长而不是http://www.w3.org/2001/XMLSchema}长?

谢谢! AFrieze

1 个答案:

答案 0 :(得分:0)

建议您尝试将样式更改为Document。这样,当您生成wsdl时,您会找到一个<type></type>部分,其中列出了该服务使用的所有数据类型。此部分还有一个namespace元素,它本质上是导致问题的原因,但由于使用RPC服务类型,wsdl不包含类型的部分,因此不明显。我假设encodingliteral

编辑:

我应该首先猜到它,但您的服务似乎使用encoded类型而不是literal。编码服务的一个问题是它们总是容易出现互操作性问题。我的建议:不要使用rpc / encoded - 使用Document / Literal。