计算器服务的xml请求无效



我对axis2c完全陌生,刚刚下载并解包适用于Windows的axis2c 1.6(二进制版本(。我已经按照安装说明进行了操作,并成功地已启动axis2_http_server。尝试访问Calculator服务的WSDL工作正常,但任何对服务的add方法返回"请求中的无效XML"以及axis2_http_server所在的控制台窗口中显示了相同的文本跑步我也试过soapUI。显示的请求是:

<soapenv:Envelope
 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:typ="http://ws.apache.org/axis2/services/Calculator/types">
<soapenv:Header/>
<soapenv:Body>
  <typ:add>
     <param_1>1.0</param_1>
     <param_2>1.0</param_2>
  </typ:add>

响应为

  <soapenv:Fault>
     <faultcode>soapenv:Sender</faultcode>
     <faultstring>Invalid XML format in request</faultstring>
  </soapenv:Fault>

问题在calc.c (function axis2_calc_add())中发布,其中seq_node = axiom_node_get_first_child(complex_node, env);返回CCD_ 3。

Calculator服务示例存在多个问题,无法正常工作。

首先,add操作的实现是无效的,它期望这样的请求(这里只是soap主体的内容(:

<typ:add>
    <complex_node>
        <seq_node>
            <param_1>1</param_1>
            <param_2>2</param_2>
        </seq_node>
    </complex_node>
</typ:add>

看起来有人犯了错误。

其次,Calculator服务中实现的代码不允许在请求元素之间有空白。它接受任何第一个节点,希望它是一个元素,但失败了,因为它在元素之间接受了文本节点。

在不修改服务的情况下启动该示例:

  1. 使用subdivmul操作之一。

  2. 删除请求元素中的所有空白,如下所示:

<typ:sub><param_1>3</param_1><param_2>2</param_2></typ:sub>

然后你就可以呼叫服务了。

如果您想看到完全工作的Calculator服务,您可以从Axis2非官方项目编译Axis2/C(或从二进制归档安装它(。

或者,您可以将这些更改应用于原始源代码并重新编译它。

相关内容

  • 没有找到相关文章

最新更新