如何使用kso​​ap2设置soap Header - android

use*_*555 15 android soap header ksoap2

我需要设置soap标头信息作为Web方法的身份验证的一部分.我正在使用ksoap2 API来调用.NET Web服务.这是带有请求的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>
Run Code Online (Sandbox Code Playgroud)

你能否提供android代码来设置soap标题"DTHeader"并设置"Username"和"Password".

big*_*nes 29

我是这样做的:

import org.kxml2.kdom.Element;
Run Code Online (Sandbox Code Playgroud)

然后准备信封

soapEnvelope.headerOut = new Element[1];
soapEnvelope.headerOut[0] = buildAuthHeader();
// ...send request...
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

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


小智 10

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

ArrayList<HeaderProperty> headerProperty = new ArrayList<HeaderProperty>();

headerProperty.add(new HeaderProperty("guid", "value..."));

androidHttpTransport.call(soap_action,envelope,headerProperty); 
Run Code Online (Sandbox Code Playgroud)

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

我的代码片段有效但需要KSoap2版本ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar来自:ksoap jar文件位置

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

感谢论坛中的所有帮助,正如我所指示的那样......

  • 此代码添加HTTP标头,而不是SOAP标头. (4认同)