Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » Ответ при GET запросе приходит без body (socket) [RSS Feed]

#1 Июнь 18, 2017 02:03:58

degid
От: Ясиноватая
Зарегистрирован: 2012-12-04
Сообщения: 49
Репутация: +  1  -
Профиль   Отправить e-mail  

Ответ при GET запросе приходит без body (socket)

Хай!
Есть такой пример по отправке POST запросов:
https://gist.github.com/zed/1841962#file-http-post-socket-py
Он работает, но если его использовать для отправки GET, то в ответ приходят только заголовки о успешном выполнении, а самого тела ответа нет.
Тот же запрос делаю в Fiddler - всё ок.
Хеееелп
https://github.com/degid/Nya-youtube-Playlist/blob/master/Nya%20youtube%20Playlist.py



Офлайн

#2 Июнь 18, 2017 17:32:50

degid
От: Ясиноватая
Зарегистрирован: 2012-12-04
Сообщения: 49
Репутация: +  1  -
Профиль   Отправить e-mail  

Ответ при GET запросе приходит без body (socket)

Всё, не актуально.



Офлайн

#3 Июнь 26, 2017 08:04:19

degid
От: Ясиноватая
Зарегистрирован: 2012-12-04
Сообщения: 49
Репутация: +  1  -
Профиль   Отправить e-mail  

Ответ при GET запросе приходит без body (socket)

Как нормально декодировать ответ?

         with closing(ssl.wrap_socket(socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM), **kwargs)) as s:
            s.connect((urlParse.hostname, 443))
            s.sendall("{metod} {path} HTTP/1.1\r\n"\
                      "Host: {hostname}\r\n"\
                      "Connection: close\r\n"\
                      "{headers}" \
                      "Content-Length: {len}\r\n"\
                      "\r\n".format(hostname=urlParse.hostname, len=len(params), path=path, metod=method, headers=headersStr).encode('utf8'))
            if method == 'POST':
                s.sendall(params)
            data = ''
            while True:
                buff = s.recv(512)
                if (len(buff) < 1):
                    break
                #data += str(buff)[2:-1]
                data += buff.decode('utf8')
С сокета читается JSON почему-то c таким куском:
“description”: "\xd0\x90\xd0\xbb\xd1\x8c\xd1\x84\xd0\xb0 \xd0\………. На этом запинается при декодировании. Если в ответе не будет этого (\xd0\x90\xd0\xbb\xd1\x8c\xd1), то всё будет норм. Так-то могу забрать и без декодирования:
 str(buff)[2:-1]
но потом всё равно, чтобы скормить это json.loads, надо какой-то urlencoded применять.
Как это декодировать? Функцию штоль писать для расшифровки или как-то стандартными методами можно?



Офлайн

#4 Июнь 27, 2017 03:10:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8432
Репутация: +  756  -
Профиль   Отправить e-mail  

Ответ при GET запросе приходит без body (socket)

degid
Как нормально декодировать ответ?
Надо его сначала весь прочитать, а уже потом один раз декодировать, иначе ты пытаешься декодировать полсимвола где-то в середине данных.



Отредактировано py.user.next (Июнь 27, 2017 03:11:04)

Офлайн

#5 Июнь 27, 2017 05:49:35

degid
От: Ясиноватая
Зарегистрирован: 2012-12-04
Сообщения: 49
Репутация: +  1  -
Профиль   Отправить e-mail  

Ответ при GET запросе приходит без body (socket)

py.user.next
спасиб



Офлайн

  • Начало
  • » Network
  • » Ответ при GET запросе приходит без body (socket)[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version