2013-10-28 4 views
2

Я делаю простой запрос POST с помощью модуля запросов, и его испытания httpbinМодуль запросов и кодирования Python?

import requests 

url  = 'http://httpbin.org/post' 
params = {'apikey':'666666'} 
sample = {'sample': open('test.bin', 'r')} 

response = requests.post(url, files=sample, params=params, verify=False) 
report_info = response.json() 
print report_info 

я проблема с кодировкой. Он не использует application/octet-stream, поэтому кодировка неверна. Из заголовков, я вижу:

{ 
    u'origin': u'xxxx, xxxxxx', 
    u'files': { 
       u'sample': u'data:None;base64,qANQR1DBw.......... 

Таким образом, я получаю data:None вместо data:application/octet-stream когда я пытаюсь с curl. Неверный размер и кодировка.

Как я могу заставить или проверить, что он использует application/octet-stream?

ответ

1

Образец взят из http://www.python-requests.org/en/latest/user/quickstart/#custom-headers

>>> import json 
>>> url = 'https://api.github.com/some/endpoint' 
>>> payload = {'some': 'data'} 
>>> headers = {'content-type': 'application/json'} 

>>> r = requests.post(url, data=json.dumps(payload), headers=headers) 

Вы можете изменить в headers к

headers = {'content-type': 'application/octet-stream'} 
response = requests.post(url, files=sample, params=params, verify=False, 
      headers = headers) 
+0

Спасибо @thefourtheye за предложение, и, хотя это действительно добавляет правильный текст в заголовок, это Безразлично Не меняйте кодировку. Файл по-прежнему неправильно кодируется. Это похоже на то, что запросы python не распознают тип файла правильно и поэтому он не кодирует правильно и не добавляет «application/octet-stream» правильно. – user2927191

+0

Использование запросов python: ''Content-Type': 'multipart/form-data; граница = 9e13cb8a968a49c2b7c8781e701d2c13''. Использование curl: 'Content-Type": "multipart/form-data; граница = ------------------------ d0f3782a702ecbd9'. Почему это другое? – user2927191

+0

Пограничная строка псевдослучайна; если вы согласны с тем же HTTP-запросом, это не проблема. – TML

Смежные вопросы