Ответ 1
В моем случае это было вызвано неправильным Content-Type
в HTTP POST. Установив его в text/xml
, проблема решена.
Я боролся со следующей ошибкой последние пару дней вы можете помочь!
Я создал код сервера и клиента, используя инструмент wsdl2java, из Файл wsdl 2.0. При вызове webservice я получаю следующую ошибку:
org.apache.axis2.AxisFault: The endpoint reference (EPR) for the
Operation not found is
/axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
and the WSA Action = null
Моя служба отображается на веб-странице axis2 со всеми доступными способами. Вот результат работы TcpMon
==============
Listen Port: 8090
Target Host: 127.0.0.1
Target Port: 8080
==== Request ====
GET /axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
SOAPAction: ""
User-Agent: Axis2
Host: 127.0.0.1:8090
==== Response ====
HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: application/xml;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 12 May 2011 15:53:20 GMT
Connection: close
12b
<soapenv:Reason xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Text xml:lang="en-US">The endpoint reference (EPR) for the
Operation not found is
/axis2/services/MyService/authentication/?username=Denise345&password=xxxxx
and the WSA Action = null</soapenv:Text></soapenv:Reason>
0
==============
Я использую:
Пожалуйста, помогите!
В моем случае это было вызвано неправильным Content-Type
в HTTP POST. Установив его в text/xml
, проблема решена.
Попробуйте добавить ?wsdl
в строку.
Как описано Эраном Чинтакой на http://wso2.com/library/176/
Если движок Axis2 не может найти службу и операцию для сообщения, он сразу же выходит из строя, отправляя сообщение об ошибке отправителю. Если служба не найдена - "Служба не найдена EPR is" Если служба найдена, но не operation- "Operation Not found EPR is и WSA Action ="
В вашем случае услуга найдена, а операция - нет. Движок Axis2 использует SOAPAction для определения запрошенной операции, и в вашем примере SOAPAction отсутствует, поэтому я бы попытался определить заголовок SOAPAction.
Это происходит потому, что исходный WSDL в каждой операции не определил значение SOAPAction.
например.
<soap12:operation soapAction="" style="document"/>
Он важен для сервера оси.
Если вы создали службу на netbeans или другой, не забудьте установить действие значения в теге @WebMethod
например. @WebMethod (action = "hello", operationName = "hello" )
Это создаст значение SOAPAction самостоятельно.
эта ошибка возникает, потому что при вызове службы он не получает wsdl файл службы ur.
jst проверить, есть ли wsdl файл службы ur → запустить сервер и из браузера запустить ось 2 приложения на локальном хосте и проверить развернутые службы и нажать на вашу службу, а затем показать wsdl файл службы ur.....или проверить путь службы в файле клиента.
Надеюсь, это поможет вам решить проблему...
Действие равно null означает, что в заданном SOAP-сообщении (Request XML) не предпринимается действие. Вы должны установить действие перед вызовом SOAP:
java.net.URL endpoint = new URL("<URL>"); //sets URL
MimeHeaders headers = message.getMimeHeaders(); // getting MIME Header
headers.addHeader("SOAPAction", "<SOAP Action>"); //add Action To Header
SOAPMessage response = soapConnection.call(<SOAPMessage>, endpoint); //then Call
soapConnection.close(); // then Close the connection
У меня была эта же проблема с использованием curl для отправки запроса на мыло. Выбрал его, добавив "content-type: text/xml" в заголовок http.
Я надеюсь, что это поможет кому-то.
Поздний ответ, но:
Я вижу, что вы делаете GET - должен быть POST?
попробуйте удалить дополнительные "/" после имени операции (аутентификация) при вызове через клиент
/axis2/services/MyService/authentication?username=Denise345&password=xxxxx
Кажется, не найти wsdl файл..
Я решил добавить параметр wsdlLocation в аннотацию javax.jws.WebService
Удалив файлы кэша wsdl- * в папке /tmp, моя проблема была решена
см. https://www.drupal.org/node/1132926#comment-6283348
будьте осторожны с разрешением на удаление
Я нахожусь в ubuntu os
На сервере приложений Websphere в той же ситуации он помог удалить папки Temp, когда сервер был остановлен.
Я столкнулся с ситуацией, когда пакет службы изменился.
Это можно решить, отключив проверку
<proxy>
<!-- . . . -->
<parameter name="disableOperationValidation">true</parameter>
</proxy>
Откройте файл WSDL и найдите:
<soap:operation soapAction="[actionNameIsHere]" style="document"/>
Добавьте в заголовок запроса [запрос отправлен на сервис]:
'soapAction' : '[actionNameIsHere]'
Это работа для меня.
Для разработчиков используя node-soap [ https://github.com/vpulim/node-soap ] - пример:
var soap = require('soap');
var options = {
...your options...
forceSoap12Headers: true
}
soap.createClient(
wsdl, options,
function(err, client) {
if(err) {
return callBack(err, result);
}
client.addHttpHeader('soapAction', '[actionNameIsHere]');
...your code - request send...
});