|
NetObjectToIDispatch45 HTTP запросы Basic auth | ☑ | ||
---|---|---|---|---|
0
San4opa
02.06.20
✎
23:38
|
Добрый день
Пробую отправить запрос на сервер с Basic auth через NetObjectToIDispatch45 кто-нибудь знает как пройти авторизацию правильно, пытаюсь делать через обработчик handler но похоже не то, сервер не отвечает. uriSources = Объект.АдресСервера+"/score/sync"; requestUri = ""; NetObject = Новый COMОбъект("NetObjectToIDispatch45"); HttpClient = NetObject.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll"); HttpClientHandler = NetObject.ПолучитьТип("System.Net.Http.HttpClientHandler"); handler = NetObject.СоздатьОбъект(HttpClientHandler); NetworkCredential = NetObject.СоздатьОбъект("System.Net.NetworkCredential"); NetworkCredential.UserName = Объект.Логин; NetworkCredential.Password = Объект.Пароль; handler.Credentials = NetworkCredential; handler.UseDefaultCredentials = Истина; Client = NetObject.СоздатьОбъект(HttpClient,handler); uri = NetObject.СоздатьОбъект("System.Uri",uriSources); Client.BaseAddress = uri; Данные = Новый Структура(); Данные.Вставить("inn","6140038703"); СтрокаJSON = Плейн_РаботаСHTTP.ПолучитьСтрокуJSON(Данные); ПараметрыЗапросаNetObject = NetObject.ОбернутьЛюбойОбъект(СтрокаJSON); StringContent = NetObject.ПолучитьТип("System.Net.Http.StringContent"); Контент = NetObject.СоздатьОбъект(StringContent,ПараметрыЗапросаNetObject); Результат = Client.PostAsync(requestUri,Контент).Result; //Result = Результат.Content.ReadAsStringAsync().Result; |
|||
1
Serginio1
03.06.20
✎
13:22
|
Если ты используешь HTTPClient то проще через заголовки client.DefaultRequestHeaders.Authorization
https://stackoverflow.com/questions/14627399/setting-authorization-header-of-httpclient public static class HttpClientExtentions { public static AuthenticationHeaderValue ToAuthHeaderValue(this string username, string password) { return new AuthenticationHeaderValue("Basic", Convert.ToBase64String( System.Text.Encoding.ASCII.GetBytes( $"{username}:{password}"))); } } Usage: using (var client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = _username.ToAuthHeaderValue(_password); } |
|||
2
Serginio1
03.06.20
✎
15:05
|
Единственно что вместо System.Text.Encoding.ASCII.GetBytes
лучше использовать System.Text.UTF8Encoding.UTF8.GetBytes( Объект.Логин+":"+Объект.Пароль) |
|||
3
San4opa
05.06.20
✎
04:32
|
(1) Спасибо, пробуем но пока не получается. Наверное дело не в авторизации.
|
|||
4
San4opa
05.06.20
✎
15:49
|
(2) Уже все перепробовали может Вы подскажете, запрос не отправляется к серверу, хотя тестируем из Postman всё работает. ИЗ 1с получаем вот такую ошибку: https://drive.google.com/file/d/1khvt_6B0zKjEbyvuOme67h-_4s7qMrcM/view?usp=sharing
адрес сервера указываем https. |
|||
5
Вафель
05.06.20
✎
15:52
|
тут наверняка авторизация по кукисам
|
|||
6
San4opa
05.06.20
✎
20:02
|
(5) Про авторизацию писал как раз там не по кукам, но все равно пробовали.
|
|||
7
Serginio1
06.06.20
✎
00:27
|
Ну можешь попробовать использовать куки
// Вставить содержимое обработчика. cookieContainer = Врап.СоздатьОбъект("System.Net.CookieContainer"); handler=Врап.СоздатьОбъект(HttpClientHandler); handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate) ; handler.CookieContainer=cookieContainer; Клиент = Врап.СоздатьОбъект(HttpClient,handler); uriSources ="http://www.telerik.com"; Ури=Врап.СоздатьОбъект("System.Uri",uriSources); Клиент.BaseAddress =Ури; Посмотри какие куки заголовки итд |
|||
8
Serginio1
06.06.20
✎
00:29
|
||||
9
Serginio1
06.06.20
✎
00:35
|
Попробуй
https://ru.stackoverflow.com/questions/480370/Как-исправить-Не-удалось-создать-защищенный-канал-ssl-tls ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; |
|||
10
San4opa
06.06.20
✎
05:05
|
(9) Спасиба, будем пробовать.
|
|||
11
Serginio1
06.06.20
✎
15:28
|
Там должно типа
ServicePointManager=врап.ПолучитьТип("System.Net.ServicePointManager"); SecurityProtocolType=врап.ПолучитьТип("System.Net.SecurityProtocolType"); ServicePointManager.SecurityProtocol = Врап.OR(SecurityProtocolType.Ssl3 , SecurityProtocolType.Tls , SecurityProtocolType.Tls11 , SecurityProtocolType.Tls12); |
|||
12
San4opa
06.06.20
✎
21:39
|
(11) Круто, получилось, спасиба.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |