Android ksoap2 WCF wsHttpBinding

Android ksoap2 WCF wsHttpBinding,android,wcf,ksoap2,wshttpbinding,Android,Wcf,Ksoap2,Wshttpbinding,我正在尝试将我的android应用程序连接到WCF web服务(IIS 6),使用 basicHttpBinding一切正常,但我希望它更安全,所以我设置了 WCF绑定到wsHttpBinding,我理解这在ksoap2上有点棘手, 我得到一个错误: 代码:s:发件人,原因:无法处理邮件。 这很可能是因为操作“”导致的 不正确,或者因为消息包含无效或过期的安全上下文令牌或 因为绑定之间存在不匹配。 如果服务因不活动而中止通道,则安全上下文令牌将无效。 为防止服务过早中止空闲会话,请增加接收超时

我正在尝试将我的android应用程序连接到WCF web服务(IIS 6),使用 basicHttpBinding一切正常,但我希望它更安全,所以我设置了 WCF绑定到wsHttpBinding,我理解这在ksoap2上有点棘手, 我得到一个错误:

代码:s:发件人,原因:无法处理邮件。 这很可能是因为操作“”导致的 不正确,或者因为消息包含无效或过期的安全上下文令牌或 因为绑定之间存在不匹配。 如果服务因不活动而中止通道,则安全上下文令牌将无效。 为防止服务过早中止空闲会话,请增加接收超时 在服务端点的绑定上

这是我的代码(android)

我试着:

private static Element[] buildHeader(String url, String soapAction) {

    String HTTP_ADDRESSING_ANONYMOUS = "http://www.w3.org/2005/08/addressing/anonymous";
    String HTTP_ADDRESSING = "http://www.w3.org/2005/08/addressing";
    String ACTION = "Action";
    String TO = "To";
    String ADDRESS = "Address";
    String REPLY_TO = "ReplyTo";
    String MUST_UNDERSTAND = "mustUnderstand";

    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;
}       
private静态元素[]buildHeader(字符串url、字符串soapAction){
字符串HTTP_ADDRESSING_ANONYMOUS=”http://www.w3.org/2005/08/addressing/anonymous";
字符串HTTP_寻址=”http://www.w3.org/2005/08/addressing";
String ACTION=“ACTION”;
字符串TO=“TO”;
字符串地址=“地址”;
字符串REPLY_TO=“ReplyTo”;
字符串必须\u理解=“mustUnderstand”;
列表标题=新建ArrayList();
Element elementAction=new Element().createElement(HTTP_寻址,操作);
elementAction.addChild(Node.TEXT,soapAction);
setAttribute(HTTP地址,必须理解“1”);
headers.add(elementAction);
Element elementTo=new Element().createElement(HTTP_寻址,TO);
elementTo.addChild(Node.TEXT,url)////////////////////////////
setAttribute(HTTP地址,必须理解“1”);
headers.add(elementTo);
Element Element replyto=new Element().createElement(HTTP\u寻址,REPLY\u TO);
元素地址=新元素();
elementReplyto.addChild(Node.ELEMENT,地址);
addChild(Node.TEXT,HTTP\u ADDRESSING\u ANONYMOUS);
setAttribute(HTTP地址,必须理解“1”);
headers.add(elementReplyto);
int size=headers.size();
元素[]数组=新元素[大小];
对于(int i=0;i

有人能帮你吗

你找到解决方案了吗?没有。只是将WCF设置为httpbasicbinding,这意味着它就像一个普通的soap协议,所以我知道我不能通过WCF基本绑定获得任何安全性,所以我使用的是.asmx web服务
private static Element[] buildHeader(String url, String soapAction) {

    String HTTP_ADDRESSING_ANONYMOUS = "http://www.w3.org/2005/08/addressing/anonymous";
    String HTTP_ADDRESSING = "http://www.w3.org/2005/08/addressing";
    String ACTION = "Action";
    String TO = "To";
    String ADDRESS = "Address";
    String REPLY_TO = "ReplyTo";
    String MUST_UNDERSTAND = "mustUnderstand";

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