我对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
。
答案 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服务中实现的代码不允许在请求元素之间有空格。它需要任何第一个节点,希望它是一个元素,但是失败,因为在元素之间传递文本节点。
要在不修改服务的情况下启动该示例:
使用sub
,div
,mul
操作之一。
删除请求元素中的所有空格:
<typ:sub><param_1>3</param_1><param_2>2</param_2></typ:sub>
然后您就可以拨打该服务了。
如果你想看到完全正常工作的计算器服务,你可以从axis2-unofficial项目(或compile Axis2/C)install it from binary archive。
或者,您可以对原始源代码应用that更改并重新编译它。