Как установить мыло Заголовок с помощью ksoap2 - android
Мне нужно установить информацию заголовка мыла как часть проверки подлинности веб-метода. Я использую API ksoap2 для вызова веб-службы .NET. Вот заголовок мыла с запросом.
<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>
Можете ли вы предоставить код андроида, чтобы установить заголовок мыла "DTHeader" и установить "Username" и "Password".
Ответы
Ответ 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;
}
очевидно, измените строки по мере необходимости.
Ответ 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-андроид-сборочно-2.5.7-банка-с-dependencies.jar
отсюда: расположение файла jap ksoap
щелкните правой кнопкой мыши и просмотрите необработанный файл и нажмите "Сохранить как".
Спасибо за всю помощь на форумах, как указал мне в правильном направлении...