Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/55: Рейтинг темы: голосов - 55, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 13

Requests - Русские символы в Username веб-сервиса

06.03.2016, 10:33. Показов 11272. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Прошу не судить строго, но столкнулся со следующей проблемой: есть веб-сервис, к которому нужно отправить soap-запрос, вся проблема в том, что username для авторизации в сервисе на русском языке, это приводит к получению

Python
1
2
 b64encode(('%s:%s' % (username, password)).encode('latin1')).strip()
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 6-15: ordinal not in range(256)
Используется модуль requests
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.03.2016, 10:33
Ответы с готовыми решениями:

Русские буквы в requests
Подскажите пожалуйста как сделать чтоб отображались русские буквы? Получаю текст сайта через requests, в ответе вместо русских букв коды ...

Получить username в веб приложении
Здравствуйте. Подскажите если кто знает, как можно получить имя пользователя(под которым залогинился в винду клиент, который входит на...

Широкие символы wchar_t wstring не хотят принимать русские символы
Собственно вопрос в шапке, вот примеры: std::wstring str = L"блин комом"; и такое: wchar_t stroka = L"abcdefghijklmnopqrstuvwxyz...

11
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.03.2016, 10:42
Где версия python, где код? С чем тебе помогать, когда ты ничего не выложил?

И у тебя что скрипт в кодировке latin1 (когда должен быть в utf8)!!?
0
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 13
06.03.2016, 10:49  [ТС]
Вот код
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# -*- coding:utf-8 -*-
 
import requests
 
 
      
request = """<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <S:Body>
        <getAggTable xmlns="ws.glosav.ru">              
            <device>54</device>
            <from>2016-03-01T00:00:00</from>            
            <to>2016-03-01T23:59:59</to>                
            <limit>1000</limit>                        
            <primaryChannel>-2</primaryChannel>         
            <channels>17</channels>                      
            <channels>160</channels>                    
            <channels>349</channels>                     
            <channels>4</channels>                     
            <policies>RwEP</policies>                  
            <policies>RwEP</policies>                   
            <policies>RwEP</policies>                   
            <policies>RwEP</policies>                   
        </getAggTable>
    </S:Body>
</S:Envelope>"""
 
encoded_request = request.encode('utf-8')
 
headers = {
           "Content-Type": "text/xml; charset=utf-8",
           "Content-Length": len(encoded_request)}
                           
response = requests.post(url="someurl?wsdl",
                         headers = headers,
                         data = encoded_request,
                         verify=False,
                         auth=("Test@РУССКИЕСИМВОЛЫ","12345"))
                 
print (response.text)
Версия питона 3.4, только начал разбираться с requests
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.03.2016, 11:07
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import requests
      
data = """<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <S:Body>
        <getAggTable xmlns="ws.glosav.ru">              
            <device>54</device>
            <from>2016-03-01T00:00:00</from>            
            <to>2016-03-01T23:59:59</to>                
            <limit>1000</limit>                        
            <primaryChannel>-2</primaryChannel>         
            <channels>17</channels>                      
            <channels>160</channels>                    
            <channels>349</channels>                     
            <channels>4</channels>                     
            <policies>RwEP</policies>                  
            <policies>RwEP</policies>                   
            <policies>RwEP</policies>                   
            <policies>RwEP</policies>                   
        </getAggTable>
    </S:Body>
</S:Envelope>"""
 
                           
response = requests.post(url="someurl?wsdl",
                         data=data,
                         verify=False,
                         auth=("Test@РУССКИЕСИМВОЛЫ", "12345"))
                 
print(response.text)
Так как ты не предоставил не url сайта, ни тестовые учетные данные проверить работу скрипта я не могу и следовательно гарантировать ничего не могу.
0
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 13
06.03.2016, 11:17  [ТС]
К сожалению, не могу предоставить URL и данные для авторизации, но вот что питон выводит

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Traceback (most recent call last):
  File "c:\Python34\ASUER\Scripts\soap.py", line 35, in <module>
    auth=("Test@����������","12345"))
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\api.py", line 109, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\api.py", line 50, in request
    response = session.request(method=method, url=url, **kwargs)
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\sessions.py", line 451, in request
    prep = self.prepare_request(req)
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\sessions.py", line 382, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\models.py", line 308, in prepare
    self.prepare_auth(auth, url)
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\models.py", line 496, in prepare_auth
    r = auth(self)
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\auth.py", line 50, in __call__
    r.headers['Authorization'] = _basic_auth_str(self.username, self.password)
  File "C:\Python34\lib\site-packages\requests-2.7.0-py3.4.egg\requests\auth.py", line 30, in _basic_auth_str
    b64encode(('%s:%s' % (username, password)).encode('latin1')).strip()
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 6-15: ordinal not in range(256)
Exited with status 1
Если русские символы заменить на латиницу, то запрос проходит, но, соответственно, не проходит авторизация(((
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5906 / 3358 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
06.03.2016, 11:42
Цитата Сообщение от RoLaNd_62 Посмотреть сообщение
К сожалению, не могу предоставить URL
Цитата Сообщение от RoLaNd_62 Посмотреть сообщение
<getAggTable xmlns="ws.glosav.ru">
нет?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.03.2016, 11:49
RoLaNd_62, загрузи на форум сам файл с скриптом (в архив его положи или расширение измени, чтобы система позволила его загрузить), подозреваю, что кодировка файла не правильная.
0
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 13
06.03.2016, 11:55  [ТС]
Вот файл
Вложения
Тип файла: rar soap.rar (536 байт, 3 просмотров)
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.03.2016, 15:44
Лучший ответ Сообщение было отмечено Marinero как решение

Решение

Сам протокол авторизации не поддерживает работу с не ascii символами, по этому ни какой проблемы с requests нету.
http://stackoverflow.com/quest... ame#702629
0
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 13
06.03.2016, 17:28  [ТС]
А почему тогда через клиенты (Postman, Fiddler) все нормально работает?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
06.03.2016, 17:33
Я ссылку прикрепил к ответу не просто так, почитай.
1
0 / 0 / 0
Регистрация: 04.09.2015
Сообщений: 13
06.03.2016, 18:33  [ТС]
Хорошо, спасибо большое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2016, 18:33
Помогаю со студенческими работами здесь

В директории сохранения файла русские символы заменяются на непонятные символы
При сохранении файл через диалоговое окно русские символы заменяются на непонятные тем самым Window выдает ошибку.

Как получить @username последнего добавленного контакта или @username по номеру телефона?
Teegram api Как получить @username последнего добавленного контакта или @username по номеру телефона

Напишите код Node.js для простого веб-сервера. В ответ на запрос [server-root] / hello / [username] сервер должен отправ
Спасибо огромное.

Уязвимость веб сервиса
увидел в одной старой теме о том что на сайте были открыты рут пути /var/www/site/tira/www/tira.com Как это понимать? PS....

Вызов веб сервиса
Добрый день! Вот занимаюсь изучением веб сервисов... Есть вот такой простейший веб сервис: using System; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru