Я хочу отправлять и получать простые данные по HTTP.
Вот серверная сторона:
import time
import BaseHTTPServer
import json
HOST_NAME = 'localhost'
PORT_NUMBER = 9000
class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_POST(self):
print "You've got mail!"
content_len = int(self.headers.getheader('content-length', 0))
body = self.rfile.read(content_len)
data = json.loads(body)
print data
if __name__ == '__main__':
server_class = BaseHTTPServer.HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME,
PORT_NUMBER)
try:
httpd.serve_forever()
except KeyboardInterrupt:
pass
httpd.server_close()
print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER)
Вот клиентская сторона:
import requests
import json
url = 'http://localhost:9000'
data = {
'date': 'the best day',
'time': 'the best time',
'name': 'Janet Smith'
}
r = requests.post(url, json=data)
print r.status_code
print r.json()
Я получаю эту ошибку:
Traceback (последний вызов был последним):
Файл "testSend.py", строка 17, в
r = запросы.пост (url, json = данные)
Файл "/Library/Python/2.7/site-packages/requests/api.py", строка 116, в записи
запрос на возврат ('post', url, data = data, json = json, ** kwargs)
Файл "/Library/Python/2.7/site-packages/requests/api.py", строка 60, в запросе
вернуть session.request (method = method, url = url, ** kwargs)
Файл "/Library/Python/2.7/site-packages/requests/sessions.py", строка 524, в запросе
resp = self.send (prep, ** send_kwargs)
Файл "/Library/Python/2.7/site-packages/requests/sessions.py", строка 637, в отправке
r = adapter.send (запрос, ** кваргс)
Файл "/Library/Python/2.7/site-packages/requests/adapters.py", строка 498, в отправке
поднять ConnectionError (ошибка, запрос = запрос)
request.exceptions.ConnectionError: ('Соединение прервано.',
BadStatusLine ( "'"))
EDIT:
Первоначально я также сталкивался с ошибкой на стороне сервера, но похоже, что проблема могла быть в строке вставленного кода. Я переписал все, и теперь это работает.