我做了一个简单的项目,使用ksoap2调用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”;
答案 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;。这是我们正在寻找的名称。