计算器服务的xml请求无效

时间:2013-04-25 07:09:28

标签: axis2c

我对axis2c完全不熟悉,我刚刚下载并解压缩了  axis2c 1.6 for Windows(二进制发行版)。 我已按照安装说明进行操作并成功完成 启动了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); 返回NULL

1 个答案:

答案 0 :(得分:3)

计算器服务示例有多个问题阻止它工作。

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

<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. 删除请求元素中的所有空格:

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

    然后您就可以拨打该服务了。

    如果你想看到完全正常工作的计算器服务,你可以从axis2-unofficial项目(或compile Axis2/Cinstall it from binary archive

    或者,您可以对原始源代码应用that更改并重新编译它。