我需要将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>
请提供android代码设置soap标题“DTHeader”并设置“Username”和“Password”。
答案 0 :(得分:29)
我是这样做的:
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;
}
显然,根据需要更改字符串。
答案 1 :(得分:10)
花了2天的时间尝试使用java和.net并最终使它工作..
ArrayList<HeaderProperty> headerProperty = new ArrayList<HeaderProperty>();
headerProperty.add(new HeaderProperty("guid", "value..."));
androidHttpTransport.call(soap_action,envelope,headerProperty);
尝试了上面的例子并添加了一个标题部分但与.net不兼容。
我的代码片段有效但需要KSoap2版本 ksoap2-机器人组装-2.5.7-JAR与 - dependencies.jar 从这里:ksoap jar file location
右键单击并查看原始文件,然后单击“另存为”。
感谢论坛中的所有帮助,正如我指出的那样......