Найти - Пользователи
Полная версия: Подключение к http сервису
Начало » Python для новичков » Подключение к http сервису
1
yurii-syrkin
Здравствуйте. Необходимо связать базу 1С и сайт на python. В 1С создал http сервис. Он работает, в браузере могу зайти по адресу, появляется информация в json формате, всё норм. Но вот из python ни как не могу подключиться к этому сервису, выдаётся ошибка 401. http сервис развернул на веб сервере IIS 10. Вот код:

from urllib import request
from requests.auth import HTTPBasicAuth
import requests

myUrl = 'http://localhost/Uchet_Chasov/hs/DataExchange'
res = requests.get(myUrl, headers= {'Authorization': ‘Basic’}, auth=HTTPBasicAuth('логин', ‘пароль’))

Какие бы логин с паролем я не передавал (и от ОС windows, и пользователь 1С) всё равно в res ошибка 401. Уже два дня бьюсь, ни чего не помогает. Если кто сталкивался, подскажите как быть. Спасибо.


@cckyi_boxxx
Похоже что проблема на стороне сервера, возможно юзеру, логин и пароль которого вы используете, вы забыли разрешить доступ через вебморду, логин и ипароль винды тут точно не помогут. С 1с я не знаком от слова совсем, но что за хидер headers= {'Authorization': ‘Basic’}? И если в настройках 1с есть возможность иной авторизации можете попробовать ее. Как-бы там ни-было вас “отшивает” именно сервер, проблема тут не в питоне.
yurii-syrkin
Ну что ж, и на том спасибо
@cckyi_boxxx
Я дико извиняюсь, невнимательно прочел, если в браузере заходит то я не прав, и тогда дело может быть в кодировке, например сервак ожидает cp1251 а вы ему utf8 отправляете, в этом случае поможет модуль encodings, почтиайте доку на ваш серв, думаю там сказано какую кодировку он ожидает.

еще можно добавить хидер charset=“UTF-8” , например так :

 myUrl = 'http://localhost/Uchet_Chasov/hs/DataExchange'
res = requests.get(myUrl, headers= {'Authorization': Basic, 'charset':'UTF-8'}, auth=HTTPBasicAuth('логин', ‘пароль’))

######################## UPDATE

ВОТ ЧЕРТ, ВЫЛОЖИЛ ВАШ КОД ПОД ТЕГИ “CODE” И СТАЛ ВИДЕН ОДИН КОСЯК, Basic В КАКИХ-ТО НЕПОНЯТНЫХ КАВЫЧКАХ, ПОМЕНЯЙТЕ НА НОРМАЛЬНЫЕ ОДИНОЧНЫЕ ИЛИ ДВОЙНЫЕ.
Jony1990
Не совсем понятно , как оно там работает . Но судя по вашему сообщению .скоро разберусь )
@cckyi_boxxx
Jony1990
Не совсем понятно , как оно там работает . Но судя по вашему сообщению .скоро разберусь )
работает оно вот так :
https://en.wikipedia.org/wiki/Basic_access_authentication

что до питона, обратные кавычки он не кушает, а если и кушает то с ошибками, а у вас целых два параметрна в них, ‘Basic’ и ‘пароль’, так-что меняйте их на прямые, одиночные - ' или двойные ".

а насчет моих слов о кодировке почитайте про нее , например тут https://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2,_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BE%D0%BA

питон обычно работает с utf8, а значит ваши переменные закодированы в нем, мне конечно доводилось видеть питонокод на cp1251 но это редкость и глупость.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB