Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2012 14:43:21

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Да, так сработало… А где про www/urlencoded почитать, желательно на русском, что-то принцип не понял…

И со строками не разобрался, пробовал значения в кавычки ставить, как сниффер показывает, но возвращается ошибка…



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#2 Авг. 7, 2012 14:50:17

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Все, со строками разобрался, получилось…. Спасибо!



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#3 Авг. 7, 2012 15:01:03

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пример Post или Get на python

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"}

Отредактировано reclosedev (Авг. 7, 2012 15:02:27)

Офлайн

#4 Авг. 7, 2012 15:34:41

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Пример Post или Get на python

Ok, а как тогда такое сделать в pycurl/grab?

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

Можно ссылку на rfc, который это разрешает?

Офлайн

#5 Авг. 7, 2012 17:05:54

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пример Post или Get на python

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

Отредактировано reclosedev (Авг. 7, 2012 17:09:23)

Офлайн

#6 Авг. 8, 2012 05:55:14

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Пример Post или Get на python

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-ом?

Отредактировано odnochlen (Авг. 8, 2012 06:42:39)

Офлайн

#7 Авг. 8, 2012 12:24:05

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пример Post или Get на python

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

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

Хотя: http://stackoverflow.com/questions/2064281/sending-post-data-with-get-request-valid

Отредактировано reclosedev (Авг. 8, 2012 12:24:38)

Офлайн

#8 Авг. 8, 2012 17:54:15

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Пример Post или Get на python

reclosedev
А зачем усложнять? Отправляется ведь одна сущность, и парсить на стороне сервера почти не надо.
Так мультипарт анпарсится библиотеками сервера почти или не почти автоматически.

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

И как бы get с post данными сделать в pycurl?

Офлайн

#9 Авг. 8, 2012 18:43:09

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Пример Post или Get на python

odnochlen
Откуда этот лог?
В смысле? В консоли IPython набирал.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version