1

我对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>

问题出在 in calc.c (function axis2_calc_add()),在哪里 seq_node = axiom_node_get_first_child(complex_node, env); 返回NULL

4

1 回答 1

3

Calculator 服务示例有多个问题使其无法正常工作。

首先,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. 使用sub, div,mul操作之一。

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

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

然后,您将能够调用该服务。

如果您想查看完整的计算器服务,您可以从 axis2-非官方项目编译 Axis2/C (或从二进制存档安装它)。

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

于 2013-04-25T20:32:37.013 回答