2013-04-25 1 views
1

Я полностью новый для оси2c, и я только что скачал и распаковал axis2c 1.6 для Windows (двоичная версия). Я следил за инструкциями по установке и успешно завершил работу axis2_http_server. Попытка доступа к WSDL-сервису калькулятора работает нормально, но при любом вызове метод добавления службы возвращает «недопустимый 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> 

Похоже, кто совершил этот код по ошибке.

Во-вторых, код, реализованный в службе калькулятора, не позволяет иметь пробелы между элементами запроса. Он берет любой первый узел, надеясь, что он является элементом, но терпит неудачу, потому что принимает текстовый узел между элементами.

Чтобы запустить этот пример без модификации сервиса:

  1. использовать один из sub, div, mul операции.

  2. удалить все пробелы в запросе элемента, как, что:

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

Тогда вы будете иметь возможность вызова службы.

Если вы хотите увидеть полностью работающий калькулятор, вы можете compile Axis2/C от axis2-неофициального проекта (или install it from binary archive).

Или вы можете применить that к первоначальному исходному коду и перекомпилировать его.

Смежные вопросы