Имя: Пароль:
1C
 
Не могу побороть авторизацию для использования вэб-сервиса.
0 Михаил Козлов
 
26.02.16
12:27
Плохо что-нибудь делать, не понимая. Но приходится.

Сразу обозначу: за решение плачу 1000 руб.

Создаю WSСсылку  по URL: http://www.dat.de/VehicleRepairOnline/services/Authentication?wsdl
WSСсылка создается нормально, показывает и модель данных и Web-сервисы.

Пробую авторизоваться. Код такой:
Функция Логин()
  пространствоИмен = "http://sphinx.dat.de/services/Authentication";;
  WSОпределения = WSСсылки.SilverDATLogin.ПолучитьWSОпределения();
  request = WSОпределения.ФабрикаXDTO.Создать(WSОпределения.ФабрикаXDTO.Тип(пространствоИмен,"doLoginRequest"));
// request – параметр метода doLogin . Тип – ОбъектXDTO, имена полей и тип (строка) совпадают.
// дальше присваиваю значения
  request.customerLogin = "ikartest"; //customerLogin;
  request.customerNumber = "3450002"; //customerNumber;    
  request.customerSignature = "jA0EAwMCD898vNK\/JCfCyTP\/MkLTg6pWXvCSJiRkN6pb5jbwkvU4dXYz38vooEpnBXnl08uPBeeMp3\/uJ3N7WSAGAhk==27Pm"; //customerSignature;
  request.interfacePartnerNumber = "3450002"; //customerNumber;
  request.interfacePartnerSignature = "jA0EAwMCxT8ofFDAzfNgySsKaEfRJdKTGRwtXXwV6Amqt2QPKq7OdLKifupXckIIrpRjyu9ADGT0pSNi"; //interfacePartnerSignature;
  //parameters.productVariant = ""; - необязательный параметр
  прокси = WSСсылки.SilverDATLogin.СоздатьWSПрокси(пространствоИмен, "Authentication", "AuthenticationPort");
  // прокси выглядит нормально.
  рез = прокси.doLogin(request);    // тут ошибка:
//Ошибка вызова операции сервиса:  {http://sphinx.dat.de/services/Authentication}:Authentication:doLogin()
//по причине:
//Ошибка SOAP сервера:  required value 'customerNumber' is missing
  Возврат рез;    
КонецФункции

Попробовал в SoapUI. Картина такая:

«Запрос» к серверу:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:aut="http://sphinx.dat.de/services/Authentication">;
   <soapenv:Header/>
   <soapenv:Body>
      <aut:doLogin>
         <request>
            <customerLogin>ikartest</customerLogin>
            <customerNumber>3450002</customerNumber>
            <customerSignature>jA0EAwMCD898vNK\/JCfCyTP\/MkLTg6pWXvCSJiRkN6pb5jbwkvU4dXYz38vooEpnBXnl08uPBeeMp3\/uJ3N7WSAGAhk==27Pm</customerSignature>
            <interfacePartnerNumber>3450002</interfacePartnerNumber>
            <interfacePartnerSignature>jA0EAwMCxT8ofFDAzfNgySsKaEfRJdKTGRwtXXwV6Amqt2QPKq7OdLKifupXckIIrpRjyu9ADGT0pSNi</interfacePartnerSignature>
            <!--Optional:-->
            <productVariant>?</productVariant>
         </request>
      </aut:doLogin>
   </soapenv:Body>
</soapenv:Envelope>

Результат (ОК):
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">;
   <S:Body>
      <ns2:doLoginResponse xmlns:ns2="http://sphinx.dat.de/services/Authentication">;
         <sessionID>r79ihge15j6m3uaah98cyyhe</sessionID>
      </ns2:doLoginResponse>
   </S:Body>
</S:Envelope>

Просьба: у кого есть минут 10-15 свободных, попробуйте.
Если получится, желательно написать на мыло (в профиле).

Пробовал на платформах 8.2.19.116 и 8.3.6.2076 (ОФ, толстый клиент). В 8.3 не петрю.
1 Михаил Козлов
 
26.02.16
14:14
Подниму.
2 Михаил Козлов
 
26.02.16
17:50
Подниму.
3 Aistovich
 
26.02.16
19:14
вбил в гугле http://sphinx.dat.de/
эта тема третья в поиске

первая вот:

but get fault: SOAP Fault: SOAP-ERROR: Encoding: object has no 'customerLogin' property - where problem? how i can fix my error? if possible tell me where wrong?

http://stackoverflow.com/questions/19363564/send-xml-data-to-wsdl
4 Aistovich
 
26.02.16
19:16
Может быть стоит проверить с http://www.dat.de , что учетные данные являются правильными ?
5 Aistovich
 
26.02.16
19:31
6 Aistovich
 
26.02.16
19:40
скорей всего куки надо засовывать еще как-то
7 Garykom
 
гуру
26.02.16
21:47
8 Garykom
 
гуру
26.02.16
21:50
(7)+ "doLogin" должно содержать "request" типа "doLoginRequest" и уже внутри "customerLogin"
9 Serginio1
 
26.02.16
22:23
На .Net авторизация получается. Если нужно могу написать как в Помощь с Web сервисом
10 Serginio1
 
26.02.16
22:24
11 Serginio1
 
26.02.16
22:54
Запрос такой
POST http://www.dat.de/VehicleRepairOnline/services/Authentication HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo9aQmnUiaxZMlokr5n3pDGAAAAAADyxwgGDc7Ue7FtdxbumBZyH1oXZji3ZGkUy1HP4VrLAACQAA
SOAPAction: "doLogin"
Host: http://www.dat.de
Content-Length: 734
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">;
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema">;
<doLogin xmlns="http://sphinx.dat.de/services/Authentication">;
<request xmlns="">
<customerLogin>ikartest</customerLogin>
<customerNumber>3450002</customerNumber>
<customerSignature>jA0EAwMCD898vNK\/JCfCyTP\/MkLTg6pWXvCSJiRkN6pb5jbwkvU4dXYz38vooEpnBXnl08uPBeeMp3\/uJ3N7WSAGAhk==27Pm</customerSignature>
<interfacePartnerNumber>3450002</interfacePartnerNumber>
<interfacePartnerSignature>jA0EAwMCxT8ofFDAzfNgySsKaEfRJdKTGRwtXXwV6Amqt2QPKq7OdLKifupXckIIrpRjyu9ADGT0pSNi</interfacePartnerSignature>
<productVariant xsi:nil="true"/></request></doLogin>
</s:Body>
</s:Envelope>
12 Serginio1
 
26.02.16
23:14
Попробуй
parameters.productVariant = неопределено;
13 Serginio1
 
26.02.16
23:33
А вот, что отправляет 1С
POST http://www.dat.de/VehicleRepairOnline/services/Authentication HTTP/1.1
Proxy-Authorization: NTLM TlRMTVNTUAABAAAAt7II4gkACQAxAAAACQAJACgAAAAKAFopAAAAD0FMRVhBTkRFUldPUktHUk9VUA==
User-Agent: 1C+Enterprise/8.3
Host: http://www.dat.de
Accept: */*
Connection: Keep-Alive
SOAPAction: "doLogin"
Content-Type: text/xml; charset=utf-8
Content-Length: 839

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">;
    <soap:Header/>
    <soap:Body> <m:doLogin xmlns:m="http://sphinx.dat.de/services/Authentication">;
    <request xmlns=""
            xmlns:xs="http://www.w3.org/2001/XMLSchema";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
        <m:customerLogin>ikartest</m:customerLogin>
        <m:customerNumber>3450002</m:customerNumber>
        <m:customerSignature>jA0EAwMCD898vNK\/JCfCyTP\/MkLTg6pWXvCSJiRkN6pb5jbwkvU4dXYz38vooEpnBXnl08uPBeeMp3\/uJ3N7WSAGAhk==27Pm</m:customerSignature>
        <m:interfacePartnerNumber>3450002</m:interfacePartnerNumber>
        <m:interfacePartnerSignature>jA0EAwMCxT8ofFDAzfNgySsKaEfRJdKTGRwtXXwV6Amqt2QPKq7OdLKifupXckIIrpRjyu9ADGT0pSNi</m:interfacePartnerSignature>
        <m:productVariant xsi:nil="true"/>
    </request>
</m:doLogin></soap:Body>
</soap:Envelope>
14 Serginio1
 
26.02.16
23:39
В первом запросе нет   <soap:Header/>. Хотя в SoapUI он есть
и объявления внутри боди а не реквеста в в SoapUI  их вообще нет
15 Serginio1
 
26.02.16
23:39
Так, что если нужно 9 сообщи.
16 Serginio1
 
26.02.16
23:48
Или используй HTTPЗапрос
17 Михаил Козлов
 
29.02.16
10:18
Спасибо всем кто ответил. Прошу извинить за поздний ответ: на выходных не было возможности просматривать форум.
Попробую понять (11) и (12).
(16) Была такая мысль, хотел сначала через Soap.
(9) Спасибо, если не получится - обращусь.
18 Михаил Козлов
 
29.02.16
13:45
(9) Коллега по работе сделал, то, что Вы предлагали.
Буду дальше тыркаться. Спасибо за участие.
19 Сергиус
 
29.02.16
13:51
(18)Еще как вариант, можно через WinHttp.WinHttpRequest.5.1
Основная теорема систематики: Новые системы плодят новые проблемы.