我正在尝试通过帖子请求将JSON消息从计算机发送到另一台计算机。 发送消息的脚本如下:
message = {'station':'turn on'}
res = rest.send( 'POST', server_addr + "/newstation", json.dumps(message), {'Content-Type': 'application/json'} )
rest.send(...)方法应该是正确的,因为我之前使用它并且它工作正常。
发送post请求的PC运行Linux,而接收运行Win 8,如果这意味着什么。
在接收机器上,我有以下内容:
@app.route('/newstation', methods = ['POST'])
def new_station ():
j_data = request.get_json()
d = decode_data(j_data)
其中decode_data(j_data)是以下
def decode_data(j_data):
d = json.loads(j_data)
return d
我的问题是:每当我尝试从第一台机器发送post请求时,响应是“内部服务器错误”,而在服务器的机器上,返回的错误是“TypeError:expected string or buffer”。 现在我认为这可能是字符串编码的问题。
接收到post请求,我可以毫无问题地打印json内容,当我尝试解码时会出现问题。
答案 0 :(得分:1)
我解决了这个问题,我当然是个错误(当然)。我误解了文档。
@app.route('/newstation', methods = ['POST'])
def new_station ():
j_data = request.get_json()
#d = decode_data(j_data)
request.get_json()已经返回了一个字典,因此实际上并不需要decode_data函数。我已经有了结果而不需要json.loads()。