Форум сайта python.su
0
Да, так сработало… А где про www/urlencoded почитать, желательно на русском, что-то принцип не понял…
И со строками не разобрался, пробовал значения в кавычки ставить, как сниффер показывает, но возвращается ошибка…
Офлайн
0
Все, со строками разобрался, получилось…. Спасибо!
Офлайн
173
odnochlenДа, а некоторые сервисы принимают строковый JSON. Но тип запроса все равно application/x-www-form-urlencoded
Вот у меня вопрос: а это вообще валидный запрос? Я знаю только 2 типа поста: www/urlencoded и multipart.
In [70]: r = requests.post("http://httpbin.org/post", data='{"json_like": "string"}') In [71]: print r.content { "origin": "", "files": {}, "form": null, "url": "http://httpbin.org/post", "args": {}, "headers": { "Content-Length": "23", "Accept-Encoding": "identity, deflate, compress, gzip", "Connection": "keep-alive", "Accept": "*/*", "User-Agent": "python-requests/0.11.1", "Host": "httpbin.org", "Content-Type": "application/x-www-form-urlencoded" }, "json": { "json_like": "string" }, "data": "{\"json_like\": \"string\"}" }
POST http://httpbin.org/post HTTP/1.1
Host: httpbin.org
Content-Length: 23
Connection: Keep-Alive
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: identity, deflate, compress, gzip
Accept: */*
User-Agent: python-requests/0.11.1
{"json_like": "string"}
Отредактировано reclosedev (Авг. 7, 2012 15:02:27)
Офлайн
14
Ok, а как тогда такое сделать в pycurl/grab?
И еще я видел запрос, в котором вместо json так передается картинка при аплоаде.
Можно ссылку на rfc, который это разрешает?
Офлайн
173
odnochlenНе пользуюсь, но уверен, что можно https://www.google.ru/search?q=curl+post+raw+data
Ok, а как тогда такое сделать в pycurl/grab?
odnochlenВ принципе, можно что угодно так передавать.
И еще я видел запрос, в котором вместо json так передается картинка при аплоаде.
odnochlenСомневаюсь, что такое в rfc прописано. Как мне кажется, что делать с сырыми данными переданными приложению (Flask: request.data, Django:request.body, PHP: HTTP_RAW_POST_DATA) - это дело самого приложения.
Можно ссылку на rfc, который это разрешает?
Отредактировано reclosedev (Авг. 7, 2012 17:09:23)
Офлайн
14
reclosedevПо-моему, через pycurl доступна только малая часть функционала curl, а именно то, что доступно через easy_setopt(). Тем не менее, рабочий пример я нашел.
odnochlen
Ok, а как тогда такое сделать в pycurl/grab?
Не пользуюсь, но уверен, что можно https://www.google.ru/search?q=curl+post+raw+data
requests.get(url, data=data)
GET /url HTTP/1.1
Host: site.com
Content-Length: 1234
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: identity, deflate, compress, gzip
Accept: */*
User-Agent: python-requests/0.12.0
data
Отредактировано odnochlen (Авг. 8, 2012 06:42:39)
Офлайн
173
odnochlenА зачем усложнять? Отправляется ведь одна сущность, и парсить на стороне сервера почти не надо.
А чем multipart-то не устроил?
odnochlenЗабавно. Видимо автор решил не мешать желающим выстрелить себе в ногу.
Эт как?? get с post payload-ом?

Отредактировано reclosedev (Авг. 8, 2012 12:24:38)
Офлайн
14
reclosedevТак мультипарт анпарсится библиотеками сервера почти или не почти автоматически.
А зачем усложнять? Отправляется ведь одна сущность, и парсить на стороне сервера почти не надо.
reclosedevОткуда этот лог?
In : r = requests.post("http://httpbin.org/post“, data='{”json_like“: ”string"}') In : print r.content
Офлайн
173
odnochlenВ смысле? В консоли IPython набирал.
Откуда этот лог?
Офлайн