繁体   English   中英

如何在flask post方法中发出post请求?

[英]How to make a post request in flask post method?

我正在尝试使用flask编写一些代码,让另一台服务器可以向其发布一些数据,然后在flask内部,当我收到来自外部的呼叫时,我想向另一台服务器进行发布。

下面是我的代码

from flask import Flask, jsonify, request
import json
import requests

app = Flask(__name__)


@app.route("/sendData.json", methods=['POST'])
def receiveImageData():
    imageData = request.json

    # save data to son file
    with open(request.json['image_filename'].split('.')[0] + '.json', 'w+') as f:
        json.dump(imageData, f, indent=4)

    # post some data to this url 
    r = requests.post('http://example.com/example.json', son = {'image_filename':'test.jpg', 'image_url': "http://images.come"})

    # return json data back for /sendData.json
    return jsonify({"status": "success"})

问题是sendData.json的最后一行{'status':'success'}将不会返回。

我该如何解决它,或者应该有另一种方法来实现这一目标?

下面是烧瓶的错误日志

127.0.0.1 - - [03/Aug/2017 14:38:37] "POST /sendData.json HTTP/1.1" 500 -
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1997, in __call__
return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1985, in wsgi_app
response = self.handle_exception(e)
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1540, in handle_exception
reraise(exc_type, exc_value, tb)
      File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1614, in full_dispatch_request
rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1517, in handle_user_exception
reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1612, in full_dispatch_request
rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1598, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
   File "/Users/bloomer/Documents/python/api_server/api.py", line 21, in receiveImageData
r = requests.post('http://example.com/example.json', son = {'image_filename':'test.jpg', 'image_url': "http://images.come"})
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 490, in send
raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', BadStatusLine("''",))

receiveImageData()的末尾使用return Response(), 200进行receiveImageData()

编辑:

我研究了一下。 实际上它应该工作。 尝试类似:

return jsonify({"success": True}), 202

您得到什么错误消息? 并发布数据和状态的服务器/ API是否相同:成功?

而不是jsonify({"status": "success"})使用:

return (Response(),200)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM