Найти - Пользователи
Полная версия: Ответ при GET запросе приходит без body (socket)
Начало » Network » Ответ при GET запросе приходит без body (socket)
1
degid
Хай!
Есть такой пример по отправке 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
degid
Всё, не актуально.
degid
Как нормально декодировать ответ?
         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 применять.
Как это декодировать? Функцию штоль писать для расшифровки или как-то стандартными методами можно?
py.user.next
degid
Как нормально декодировать ответ?
Надо его сначала весь прочитать, а уже потом один раз декодировать, иначе ты пытаешься декодировать полсимвола где-то в середине данных.
degid
py.user.next
спасиб
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