2011-06-29 39 views
5

Tôi đã thực hiện một dự án đơn giản để gọi dịch vụ web wcf bằng cách sử dụng ksoap2. Nhưng khi nó gọi envelope.getResponse(); nó mang lại cho lỗi nói -----Android với dịch vụ web WCF bằng cách sử dụng ksoap2 - lỗi SoapFault - lỗi: ‘a: ActionNotSupported’

“SoapFault - faultcode: 'a: ActionNotSupported' faultstring: 'Thông điệp với hành động 'GetString' không thể xử lý tại máy thu, do ContractFilter không khớp tại EndpointDispatcher. Đây có thể là do hợp đồng không khớp (Hành động không khớp giữa người gửi và người nhận ) hoặc ràng buộc/an ninh không khớp giữa người gửi và người nhận . Hãy kiểm tra xem người gửi và người nhận có hợp đồng tương tự và cùng ràng buộc (bao gồm yêu cầu bảo mật, ví dụ như tin nhắn, Giao thông vận tải, Không) 'faultactor: ' null' chi tiết: null”

Tôi chạy dịch vụ web trong localhost.

hãy giúp tôi một số một

là giá trị này đúng mà tôi đã được giao,

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”; 

Trả lời

11

Chúng tôi không biết nếu những giá trị này là chính xác - WSDL sẽ cho bạn biết hành động SOAP đúng là những gì gọi hoạt động GetString.

mở WSDL trong trình duyệt web (có nghĩa là địa chỉ mà bạn được giao trong SOAP_ADDRESS) và tìm thấy một cái gì đó như:

<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. khi bạn gọi dịch vụ, bạn nên sử dụng URL không có chuỗi truy vấn ?wsdl.

+0

Cảm ơn bạn rất nhiều Ladislav Mrnka ... :)))) – janitheshan

+0

Cảm ơn bạn rất nhiều người đàn ông. Đối với điều này tôi lãng phí 2 ngày. Cảm ơn bạn một lần nữa – Gunaseelan

+0

Nó đã giúp trong việc có được hành động chính xác .... Cảm ơn bạn đã hướng dẫn – Noman

2

Bạn cũng có thể kiểm tra actionName bằng SoapUI. Đầu tiên tạo yêu cầu ví dụ bằng cách cung cấp địa chỉ wsdl và sau đó tìm yêu cầu của bạn. Khi bạn tìm thấy nó, chọn tab "Raw" ở phía bên trái của cửa sổ với yêu cầu. Bạn có thể tìm thấy tiêu đề http đó. Một trong những vị trí tiêu đề là "SOAPAction". Đó là tên mà chúng tôi đang tìm kiếm.

Các vấn đề liên quan