【问题标题】:how to set soap Header using ksoap2 - android如何使用 ksoap2 设置soap Header - android
【发布时间】:2011-08-02 14:09:10
【问题描述】:

我需要将soap 标头信息设置为Web 方法身份验证的一部分。我正在使用 ksoap2 API 来调用 .NET 网络服务。这是带有请求的soap标头。

<soap:Header>
    <DTHeader xmlns="http://myServer.com/webservices/">
      <Username> string </Username>
      <Password> string </Password>
    </DTHeader>
</soap:Header>
<soap:Body>
    <MyTestMethod xmlns="http://myServer.com/webservices/">
       <ID> string </ID>
       <TransID> guid </TransID>
     </MyTestMethod>
</soap:Body>

您能否提供设置soap头“DTHeader”并设置“用户名”和“密码”的android代码。

【问题讨论】:

    标签: android soap header ksoap2


    【解决方案1】:

    我是这样做的:

    import org.kxml2.kdom.Element;
    

    然后在准备信封时

    soapEnvelope.headerOut = new Element[1];
    soapEnvelope.headerOut[0] = buildAuthHeader();
    // ...send request...
    

    private Element buildAuthHeader() {
        Element h = new Element().createElement(NAMESPACE, "AuthHeader");
        Element username = new Element().createElement(NAMESPACE, "user");
        username.addChild(Node.TEXT, USERNAME);
        h.addChild(Node.ELEMENT, username);
        Element pass = new Element().createElement(NAMESPACE, "pass");
        pass.addChild(Node.TEXT, PASSWORD);
        h.addChild(Node.ELEMENT, pass);
    
        return h;
    }
    

    显然,根据需要更改字符串。

    【讨论】:

    • 感谢您的快速回复。现在我可以添加soap 标头作为soap 请求的一部分。但是还有另一个问题。作为 Web 方法调用的一部分,我有两个要传递的参数“CalID”(定义为“字符串”作为 .NET Web 服务的一部分)和“SessionID”(定义为“guid”作为 .NET Web 服务的一部分) .此外,我需要有关 1. 如何创建 guid 并以“guid”作为类型传递参数的帮助。
    • @user698555:如果guid 是原始类型,您可以将其视为字符串/整数/...,因为.net 和ksoap 之间没有真正的集成。如果它是一个复杂类型,您必须制作该类型的 Java 版本并使其实现 KvmSerializableMarshal,请参阅此处的一些文章:seesharpgears.blogspot.com/search/label/ksoap(如果有问题,请记住接受答案很满意,谢谢!)
    • 非常感谢。在您的宝贵帮助下,一切正常。请让我知道如何接受答案,因为我是这个新闻组的新手。
    • @user698555:很高兴它有帮助。接受只需单击问题旁边的勾号,再次感谢您!
    • 我有同样的问题,但可以得到 guid 类型:04-25 15:03:55.203: W/System.err(16822): java.lang.RuntimeException: String expected 04-25 15:03:55.228: W/System.err(16822): at org.kxml2.kdom.Node.addChild(Node.java:64) 04-25 15:03:55.228: W/System.err(16822): at org.kxml2.kdom.Node.addChild(Node.java:73) 请提供一些例子。我有 id、string 和 guid。请问我的问题是:[link] (stackoverflow.com/questions/23284640/…)
    【解决方案2】:

    花了 2 天时间试图让它与 java 和 .net 一起工作,终于让它工作了..

    ArrayList<HeaderProperty> headerProperty = new ArrayList<HeaderProperty>();
    
    headerProperty.add(new HeaderProperty("guid", "value..."));
    
    androidHttpTransport.call(soap_action,envelope,headerProperty); 
    

    尝试了上面的示例,并会添加一个标题部分,但与 .net 不兼容。

    我的一段代码可以工作,但需要 KSoap2 版本 ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar 从这里:ksoap jar file location

    右键单击并查看原始文件,然后单击另存为。

    感谢论坛中的所有帮助,为我指明了正确的方向...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多