Найти - Пользователи
Полная версия: Как отправить json через http
Начало » Web » Как отправить json через http
1 2
vatsik
Подскажите может есть какие-то библиотеки или способы…

Надо отправить json через http на веб-форму методом post
igor.kaist
Как ни странно, для работы с json есть библиотека, которая называется json :)
Начинаяс 2.6 она идет в комплекте с питоном, если у вас python<2.6 то необходимо установить любую другую библиотеку, например simplejson.
Далее просто отправляете сформированные данные, с помощью любой из подходящих библиотек, например, urllib.
vatsik
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
Что это за ошибка? И что я делаю не так???
dimabest
data = urllib.urlencode(python_dict)
request = urllib.urlopen('http://127.0.0.1:8000/add/', data)
out = request.read()
vatsik
Спасибо!!! Очень внятно объяснили….
Тогда где тут json????
Александр Кошелев
vatsik
Что это за ошибка? И что я делаю не так???
Это у вас сломался:
sendData = urllib.encode(sjonData)
Вам нужен quote.

И потом не забудте в запрос добавить заголовок Content-Type c правильным значением.
igor.kaist
vatsik
Спасибо!!! Очень внятно объяснили….
Тогда где тут json????
Немного не так все… У POST запросов есть поля, у которых должны быть значения. Вам нужно выяснить для начала, какое название поля должно быть у вашего запроса, и в значении этого поля уже должен содержаться json. Например, поле POST запроса должно называться data, тогда
import urllib
import json

# данные для json
jsondata={'hello':'world}
# дампим и преобразуем в объект, понятный urllib
post=urllib.urlencode({'data':json.dumps(jsondata)})
# и посылаем запрос
request=urllib.urlopen('http://url',post)
Александр Кошелев
igor.kaist
У POST запросов есть поля, у которых должны быть значения.
Совсем не обязательн. Это справедливо для application/x-www-form-urlencoded
vatsik
Сделал все что тут написано но :

socket.error: Connection reset by peer

не могу даже Hello World отправить…

NEED HELP!!!!!!!!!!
zheromo
А если так:
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()
Да, а что выступает в качестве сервера?
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