我在以前的一次项目开发中遇到过这样的问题,因为是小项目,服务端用的是.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);
这个是buildHeader(x,x)方法
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;
}
希望能帮助你解决和我相似的问题。