2011-06-29 10 views
5

Zrobiłem prosty projekt wywoływania usługi internetowej wcf za pomocą ksoap2. Ale kiedy wywołuje envelope.getResponse(); daje błąd mówiąc -----Android z usługą WCF za pomocą ksoap2 - błąd SoapFault - kod błędu: "a: ActionNotSupported"

„SoapFault - faultcode: 'a: ActionNotSupported' faultstring: „Przesłanie z akcją 'GetString' nie mogą być przetwarzane w odbiorniku, W wyniku Niezgodność ContractFilter w w EndpointDispatcher. Może to być z powodu niedopasowania umowy (niedopasowane działanie pomiędzy nadawcą a odbiornikiem ) lub niezgodności wiązania/nadawcy między odbiorcą a odbiornikiem . Sprawdź, czy nadawca i odbiorca mają ten sam kontrakt i samo wiążące (w tym wymogów bezpieczeństwa, np wiadomości, transport, Brak) „faultactor: 'null' szczegół: null”

jestem działająca usługa sieciowa w localhost.

proszę mi pomóc ktoś

jest to poprawne wartości, że mam przypisany

private static final String SOAP_ACTION = “GetString”; 
private static final String OPERATION_NAME = “GetString”; 
private static final String WSDL_TARGET_NAMESPACE = “http://tempuri.org/”; 
private static final String SOAP_ADDRESS = “http://10.0.2.2:14089/Service1.svc?wsdl”; 

Odpowiedz

11

Nie wiemy, czy te wartości są poprawne - WSDL powinien powiedzieć, co jest poprawne działanie SOAP dla wywołanie operacji GetString.

WSDL Otwórz w przeglądarce internetowej (czyli adres jesteś przypisując w SOAP_ADDRESS) i znaleźć coś takiego:

<wsdl:binding name="..." type="..."> 
    ... 
    <wsdl:operation name="GetString"> 
    <soap:operation soapAction="HERE_IS_CORRECT_ACTION" /> 
    <wsdl:input>...</wsdl:input> 
    <wsdl:output>...</wsdl:output> 
    </wsdl> 
    ... 
</wsdl:binding> 

btw. po wywołaniu usługi powinieneś użyć adresu URL bez ciągu zapytania ?wsdl.

+0

Bardzo dziękuję Ladislavowi Mrnce ... :)))) – janitheshan

+0

Dziękuję bardzo człowieku. W tym celu zmarnowałem 2 dni. Jeszcze raz dziękuję – Gunaseelan

+0

Pomogło to w uzyskaniu prawidłowych działań .... Dziękujemy za wskazówki – Noman

2

Możesz również sprawdzić właściwość actionName za pomocą SoapUI. Najpierw wygeneruj przykładowe żądanie, podając adres wsdl, a następnie znajdź swoje żądanie. Po znalezieniu wybierz kartę "Raw" po lewej stronie okna z prośbą. Możesz tam znaleźć nagłówki http. Jedną z pozycji nagłówka jest "SOAPAction". Jest to nazwa, której szukamy.

Powiązane problemy