我对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服务中实现的代码不允许在请求元素之间有空白。它接受任何第一个节点,希望它是一个元素,但失败了,因为它在元素之间接受了文本节点。
在不修改服务的情况下启动该示例:
使用
sub
、div
和mul
操作之一。删除请求元素中的所有空白,如下所示:
<typ:sub><param_1>3</param_1><param_2>2</param_2></typ:sub>
然后你就可以呼叫服务了。
如果您想看到完全工作的Calculator服务,您可以从Axis2非官方项目编译Axis2/C(或从二进制归档安装它(。
或者,您可以将这些更改应用于原始源代码并重新编译它。