Форум сайта python.su
Подскажите может есть какие-то библиотеки или способы…
Надо отправить json через http на веб-форму методом post
Отредактировано (Март 9, 2011 01:27:36)
Офлайн
Как ни странно, для работы с json есть библиотека, которая называется json :)
Начинаяс 2.6 она идет в комплекте с питоном, если у вас python<2.6 то необходимо установить любую другую библиотеку, например simplejson.
Далее просто отправляете сформированные данные, с помощью любой из подходящих библиотек, например, urllib.
Офлайн
Data это словарь
следующий кусок кода:
jsonData = simplejson.dumps(Data)
sendData = urllib.encode(sjonData)
request = urllib2.urlopen('http://127.0.0.1:8000/add/',sendData)
out = request.read()
TypeError: not a valid non-string sequence or mapping object
Отредактировано (Март 9, 2011 11:38:37)
Офлайн
data = urllib.urlencode(python_dict)
request = urllib.urlopen('http://127.0.0.1:8000/add/', data)
out = request.read()
Офлайн
Спасибо!!! Очень внятно объяснили….
Тогда где тут json????
Офлайн
vatsikЭто у вас сломался:
Что это за ошибка? И что я делаю не так???
sendData = urllib.encode(sjonData)
Офлайн
vatsikНемного не так все… У POST запросов есть поля, у которых должны быть значения. Вам нужно выяснить для начала, какое название поля должно быть у вашего запроса, и в значении этого поля уже должен содержаться json. Например, поле POST запроса должно называться data, тогда
Спасибо!!! Очень внятно объяснили….
Тогда где тут json????
import urllib
import json
# данные для json
jsondata={'hello':'world}
# дампим и преобразуем в объект, понятный urllib
post=urllib.urlencode({'data':json.dumps(jsondata)})
# и посылаем запрос
request=urllib.urlopen('http://url',post)
Офлайн
igor.kaistСовсем не обязательн. Это справедливо для application/x-www-form-urlencoded
У POST запросов есть поля, у которых должны быть значения.
Офлайн
Сделал все что тут написано но :
socket.error: Connection reset by peer
не могу даже Hello World отправить…
NEED HELP!!!!!!!!!!
Офлайн
А если так:
jsonData = simplejson.dumps(Data)
headers = {"Content-type": "application/json", "Accept": "application/json"}
conn = httplib.HTTPConnection("127.0.0.1:8000")
conn.request("POST", "/add", jsonData, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
conn.close()
Офлайн