2011-06-08 206 views
0

我有一个.net 2.0 C#客户端应用程序具有对Web服务的引用Axis2 Java Webservice。 这个想法是发送一些XML数据到Web服务,所以它可以被解析并插入到数据库中。 WS方法接受类型'xsd:anytype'的单个参数。.net客户端使用Axis2 Web服务

的Java Web服务:

public class JWS{  
    public Response AddData(Object inputXML) {    
     return Response; 
    } 
} 

C#客户:

JWS client = new JWS(); 
object inputXML = "<xml>some xml data</xml>"; 
response = client.AddData(inputXML); 

有2个问题,使用招监测时,我看到。

1)请求具有附加元件'<inputXML>'实际的XML数据之前添加。

<inputXML>&lt;xml&gt;some xml data&lt;/xml&gt;</inputXML> 

2)XML编码,所以“<”被显示为"&lt;"

我不知道这是怎么SOAP请求的产生,但我想删除<inputXML>标签也,让xml按原样显示,而不必替换特殊字符。

这可能吗?它是否与'Wrapping'/'UnWrapping'类型有关?

而且,我已经使用了SoapUI测试Java Web服务,而且运作良好。但是,在请求标签中,我必须手动删除<inputXML>标签并提交它才能正常工作。请帮忙。

TIA

回答

0

我发现问题不在于编码,而是在axis2中查看消息时在java端解释不正确。所以,它正在得到正确的解码。此外,inputxml现在正在正确处理。

1

这是预期下,SOAP行为,并传递给你的Web服务方法时inputXml变量将被解码回原始字符串。

然而,这可能表明你的设计有问题,你有没有考虑构造一个对象发送到Web服务,而不是XML数据? (因为无论如何,这个对象将透明地转换为XML的Web服务调用)。

+0

你能举个例子吗? – SoftwareGeek 2011-06-08 02:27:14

+0

对不起,我对你遇到的问题有点不确定,你能给出更多关于如何生成C#客户端的细节,并且你可以给出抛出的实际错误的输出结果吗?你有调试器中的Web服务来获取inputXML的实际值吗? – 2011-06-08 02:38:55

+0

我在c#项目中向java ws添加了一个web服务引用。当我调试时,我看到使用fiddler的请求和响应&我的整个xml被java webservice接收,但是xml被编码,并且在xml之前还有另一个与参数(inputXML)同名的元素。这是如何工作的? – SoftwareGeek 2011-06-09 00:25:04