使用kso​​ap2的WCF Web服务的Android - 错误SoapFault - faultcode:'a:ActionNotSupported'

时间:2011-06-29 15:00:23

标签: android wcf ksoap2

我做了一个简单的项目,使用kso​​ap2调用wcf web服务。但是当它打电话时 envelope.getResponse(); 它给错误说-----

  

“SoapFault - faultcode:   'a:ActionNotSupported'faultstring:   '带有Action'GetString'的消息   不能在接收器处理,   由于ContractFilter不匹配   EndpointDispatcher。这可能是   因为合同不匹配   (发件人和发件人之间不匹配的行为)   接收者)或绑定/安全   发件人和发件人之间不匹配   接收器。检查发件人和   接收者有相同的合同和   相同的绑定(包括安全性   要求,例如消息,运输,   无)。'faultactor:'null'细节:   空”

我正在localhost中运行web服务。

请帮帮我一个

这个值是否正确,我指定了

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

2 个答案:

答案 0 :(得分:11)

我们不知道这些值是否正确 - WSDL应该告诉您调用GetString操作的正确SOAP操作是什么。

在Web浏览器中打开WSDL(这是您在SOAP_ADDRESS中指定的地址)并找到类似的内容:

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

顺便说一下。当您调用该服务时,您应使用不带?wsdl查询字符串的URL。

答案 1 :(得分:2)

您还可以使用SoapUI检查actionName。首先通过提供wsdl地址生成示例请求,然后找到您的请求。当你找到它时,选择&#34; Raw&#34;窗口左侧的选项卡请求。你可以找到http标头。标题位置之一是&#34; SOAPAction&#34;。这是我们正在寻找的名称。