Найти - Пользователи
Полная версия: Пример Post или Get на python
Начало » Python для новичков » Пример Post или Get на python
1 2 3
Seganapa
Да, так сработало… А где про www/urlencoded почитать, желательно на русском, что-то принцип не понял…

И со строками не разобрался, пробовал значения в кавычки ставить, как сниффер показывает, но возвращается ошибка…
Seganapa
Все, со строками разобрался, получилось…. Спасибо!
reclosedev
odnochlen
Вот у меня вопрос: а это вообще валидный запрос? Я знаю только 2 типа поста: www/urlencoded и multipart.
Да, а некоторые сервисы принимают строковый JSON. Но тип запроса все равно application/x-www-form-urlencoded
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"}
odnochlen
Ok, а как тогда такое сделать в pycurl/grab?

И еще я видел запрос, в котором вместо json так передается картинка при аплоаде.

Можно ссылку на rfc, который это разрешает?
reclosedev
odnochlen
Ok, а как тогда такое сделать в pycurl/grab?
Не пользуюсь, но уверен, что можно https://www.google.ru/search?q=curl+post+raw+data
odnochlen
И еще я видел запрос, в котором вместо json так передается картинка при аплоаде.
В принципе, можно что угодно так передавать.
odnochlen
Можно ссылку на rfc, который это разрешает?
Сомневаюсь, что такое в rfc прописано. Как мне кажется, что делать с сырыми данными переданными приложению (Flask: request.data, Django:request.body, PHP: HTTP_RAW_POST_DATA) - это дело самого приложения.

Много где так и рекомендуют отправлять JSON
http://www.ibm.com/developerworks/web/library/wa-ajaxintro11/index.html
odnochlen
reclosedev
odnochlen
Ok, а как тогда такое сделать в pycurl/grab?

Не пользуюсь, но уверен, что можно https://www.google.ru/search?q=curl+post+raw+data
По-моему, через pycurl доступна только малая часть функционала curl, а именно то, что доступно через easy_setopt(). Тем не менее, рабочий пример я нашел.

Получается, это такой непризнанный стандарт? А чем multipart-то не устроил?

А вот вообще офигеоз.

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

Эт как?? get с post payload-ом?
reclosedev
odnochlen
А чем multipart-то не устроил?
А зачем усложнять? Отправляется ведь одна сущность, и парсить на стороне сервера почти не надо.

odnochlen
Эт как?? get с post payload-ом?
Забавно. Видимо автор решил не мешать желающим выстрелить себе в ногу.

Хотя: http://stackoverflow.com/questions/2064281/sending-post-data-with-get-request-valid
odnochlen
reclosedev
А зачем усложнять? Отправляется ведь одна сущность, и парсить на стороне сервера почти не надо.
Так мультипарт анпарсится библиотеками сервера почти или не почти автоматически.

reclosedev
In : r = requests.post("http://httpbin.org/post“, data='{”json_like“: ”string"}') In : print r.content
Откуда этот лог?

И как бы get с post данными сделать в pycurl?
reclosedev
odnochlen
Откуда этот лог?
В смысле? В консоли IPython набирал.
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