Имя: Пароль:
1C
1С v8
NTLM в HTTPСоединение
0 Odin-s
 
02.12.11
16:04
Добрый день!

Кому-нибудь удавалось, используя NTLM-авторизацию, получать с сервера файлы (например)?

С сервера на Sharepoint 2007 не хочет брать (отваливается после получения статуса 401, не пытаясь провести ntlm-авторизацию).
1 oleg_km
 
02.12.11
17:47
По-моему, не реализовано. Зато на прокси, даже когда не нужно лепит NTLM-авторизацию (если не задавать пользователя и пароль прокси-сервера). Поэтому не использую встроенный HTTP. Попробуй WinHTTP. По-моему гораздо лучше. Только что к Windows привязан
2 Odin-s
 
02.12.11
19:34
(1) Спасибо, попробую.

Да, из саппорта 1С ответили, что ntlm реализована только для прокси.
3 Odin-s
 
07.12.11
16:30
Вроде бы получилось через WinHTTP, установив SetAutoLogonPolicy(0).

Осталось понять, как сохранить полученный объект IStream в файл.
4 Odin-s
 
07.12.11
17:08
Оказалось проще сохранить COMSafeArray из свойства ResposeBody.

Финальный код

HTTP = New COMObject("WinHttp.WinHttpRequest.5.1");
HTTP.Open("GET", "http://[fileurl]", False);
HTTP.SetAutoLogonPolicy(0);
HTTP.Send();
   
If HTTP.Status = 200 Then
   Stream = New COMObject("ADODB.Stream");
   Stream.Type = 1;
   Stream.Open();
   Stream.Write(HTTP.ResponseBody);
   Stream.SaveToFile([filename]);
   Stream.Close();
EndIf;
5 oleg_km
 
07.12.11
17:20
Ну примерно так, еще он умеет SSL с обоюдной авторизацией. И в целом более юзабельный. Не зря в БП 2.0 взаимодействие с Интернетом 1С сделала на своей ВК, а не на встроенном объекте
Независимо от того, куда вы едете — это в гору и против ветра!