как установить мыльный заголовок с помощью ksoap2 - android - PullRequest
15 голосов
/ 10 апреля 2011

Мне нужно установить информацию заголовка мыла как часть аутентификации веб-метода.Я использую ksoap2 API для вызова веб-службы .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>

Можете ли вы предоставить код Android, чтобы установить заголовок мыла "DTHeader" и установить "Имя пользователя" и "Пароль".

Ответы [ 2 ]

29 голосов
/ 10 апреля 2011

Я сделал это следующим образом:

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

очевидно, измените строки при необходимости.

10 голосов
/ 10 июля 2011

Потратил 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 отсюда: расположение файла jar ksoap

Щелкните правой кнопкой мыши, просмотрите необработанный файл и нажмите Сохранить как.

Спасибо за помощь в форумах, которые указали мне в правильном направлении ...

...