2013-04-25 63 views
1

我完全不熟悉axis2c,並且我剛下載並解壓縮了axis2c 1.6 for Windows(binary release)。 我已按照安裝說明並已成功啓動axis2_http_server 。 試圖訪問計算器服務的WSDL工作正常,但任何調用 服務的add方法返回「請求中無效的XML」以及 相同的文本顯示在控制檯窗口中axis2_http_server運行的 處。 我也試過soapUI。所示的要求是:對計算器服務無效的xml請求

<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

回答

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. 使用sub之一,divmul操作。

  2. 撤除請求元素中的所有空格這樣的:

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

然後你就可以調用服務。

如果你想看到完整的計算器服務工作,你可以從axis2-unofficial項目(或install it from binary archivecompile Axis2/C

或者,您可以將that更改應用到原始源代碼並重新編譯。

相關問題