【问题标题】:.net Client consuming Axis2 Web Service.net 客户端使用 Axis2 Web 服务
【发布时间】:2011-09-10 12:47:45
【问题描述】:

我有一个 .net 2.0 C# 客户端应用程序,其中包含对 Axis2 Java Webservice 的 Web 服务引用。 这个想法是将一些xml数据发送到webservice,因此可以对其进行解析并插入到数据库中。 WS 方法接受类型为“xsd:anytype”的单个参数。

Java 网络服务:

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);

在使用 fiddler 进行监控时,我看到了 2 个问题。

1) 请求在实际 xml 数据之前添加了一个附加元素 '&lt;inputXML&gt;'

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

2) xml 已编码,因此“"&lt;"

我不确定这是否是生成 SOAP 请求的方式,但我想删除 &lt;inputXML&gt; 标记,并且让 xml 保持原样显示而无需替换特殊字符。

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

另外,我使用 SoapUI 测试了 java web 服务,它运行良好。但是,在请求选项卡中,我必须手动删除&lt;inputXML&gt; 标签并提交它才能正常工作。请帮忙。

TIA

【问题讨论】:

    标签: c# xml web-services client axis2


    【解决方案1】:

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

    但这可能表明您的设计存在问题,您是否考虑过构造一个对象以发送到您的 Web 服务而不是 xml 数据? (因为无论如何这个对象都会被透明地转换为 xml 以供 Web 服务调用)。

    【讨论】:

    • 你能举个例子吗?
    • 对不起,我有点不确定您遇到的问题,您能否提供更多有关如何生成 c# 客户端的详细信息,以及您能否就实际抛出的错误提供输出?您是否在调试器中有 Web 服务来获取 inputXML 的实际值?
    • 我在一个 c# 项目中添加了一个 web 服务引用到 java ws.当我调试时,我看到使用 fiddler 的请求和响应,我的整个 xml 都由 java webservice 接收,但 xml 是编码的,而且在 xml 之前还有另一个与参数 (inputXML) 同名的元素。这就是它的工作原理吗?
    • 是的,它就是这样工作的,轴应该去掉inputXML标签,然后把你编码的xml转回来。在 AddData 方法中,您将找到原始的 &lt;xml&gt;some xml data&lt;/xml&gt; 字符串。
    • 它与 'Wrapping'/'UnWrapping' 类型有关吗? 换句话说,你在这里是正确的。
    【解决方案2】:

    我发现问题不在于编码,但当在axis2中查看消息时,它在java端的解释不正确。因此,它正在正确解码。此外,现在正在正确处理 inputxml。

    【讨论】:

      猜你喜欢
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多