2014-10-20 4 views
0

У меня есть сервер работает на:Python почтовых вызовы не работают

http://localhost:3000/appleconnect 

, который будет принимать звонки поста. Поэтому я написал код python для создания http-запроса, но это не работает:

import httplib, urllib, json 
params = json.load("{'op' : 'sign'}") 
headers = {"Content-type": "application/json", 
      "Accept": "text/plain"} 
conn = httplib.HTTPConnection("localhost:3000") 
conn.request("POST", "/appleconnect", 
      params, headers) 
response = conn.getresponse() 
print response.status, response.reason 
data = response.read() 
conn.close() 

Вышеуказанное не работает. Он дает мне ошибку, такую ​​как:

Traceback (most recent call last): 
    File "post.py", line 2, in <module> 
    params = json.load("{'op' : 'sign'}") 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 286, in load 
    return loads(fp.read(), 
AttributeError: 'str' object has no attribute 'read' 

где я делаю ошибку?

+0

Что такое "приложение/приложение/json"? –

+0

Извините, обновил мой код. – batman

ответ

1

Вы должны использовать json.loads вместо json.load. Что касается второй ошибки, вы должны убедиться, что ваша строка является объектом json. Прочтите этот код:

import httplib, urllib, json 
jsonObject = json.dumps("{'op' : 'sign'}") 
params = json.loads(jsonObject) 
... 
1

json.load предназначен для файлов или файловых объектов. Для простого дикта, вам нужно json.loads.

Редактировать

Ваша строка не является допустимым JSON: для этого вам нужно двойные кавычки, не единичные.

Но я не понимаю, почему вы делаете это вообще. Это неправильный путь: loads преобразует строку JSON в объекты Python, но conn.request ожидает строку в первую очередь. Я подозреваю, что вы хотели, чтобы начать с Dict Python, преобразовать его в формат JSON, а затем передать, что к запросу:

params = json.dumps({'op' : 'sign'}) 
+0

теперь получает следующую ошибку: 'Файл" post.py ", строка 2, в params = json.loads (" {operation: 'signout'} ") . , , ValueError: Ожидание имени свойства: строка 1 столбец 2 (char 1) ' – batman

Смежные вопросы