我在以前的一次项目开发中遇到过这样的问题,因为是小项目,服务端用的是.net中的WCF技术开发的webservice,我在android中调用的时候出现了一些问题,比如,我按要求发送了数据,返回的异常错误:
Code: s:Sender, Reason: 由于 AddressFilter 在 EndpointDispatcher 不匹配,To 为“”的消息无法在接收方处理。请检查发送方和接收方的 EndpointAddresses 是否一致。
at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:149)
这个情况,我一开始也不知道是为什么,我一开始是认为Soap的协议规范弄错了,我试了SoapEnvelop.VER11和12,都依然无法解决问题。
最后在国外的网站上看到了解决方案:
这是我的一段代码
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER12); envelope.bodyOut = soapObject; envelope.dotNet = true; envelope.implicitTypes = true; envelope.headerOut = buildHeader(Urls.SERVICE_URL, soapAction);
public static Element[] buildHeader(String url, String soapAction) { List<Element> headers = new ArrayList<Element>(); Element elementAction = new Element().createElement(HTTP_ADDRESSING, ACTION); elementAction.addChild(Node.TEXT, soapAction); elementAction.setAttribute(HTTP_ADDRESSING, MUST_UNDERSTAND, "1"); headers.add(elementAction); Element elementTo = new Element().createElement(HTTP_ADDRESSING, TO); elementTo.addChild(Node.TEXT, url); elementTo.setAttribute(HTTP_ADDRESSING, MUST_UNDERSTAND, "1"); headers.add(elementTo); Element elementReplyto = new Element().createElement(HTTP_ADDRESSING, REPLY_TO); Element address = new Element().createElement(HTTP_ADDRESSING, ADDRESS); elementReplyto.addChild(Node.ELEMENT, address); address.addChild(Node.TEXT, HTTP_ADDRESSING_ANONYMOUS); elementReplyto.setAttribute(HTTP_ADDRESSING, MUST_UNDERSTAND, "1"); headers.add(elementReplyto); int size = headers.size(); Element[] array = new Element[size]; for (int i = 0; i < size; i++) { array[i] = headers.get(i); } return array; }希望能帮助你解决和我相似的问题。