Извините, если это кажется рудиментарным, поскольку я новичок в Python. Задача, которую я пытаюсь завершить, - отправить json-объект из приложения iPhone в сценарий python, который обработает платеж по полосе. Проблема у меня есть, я не могу понять, как заставить Python распознавать входящий json-объект для извлечения данных из него и перехода на Stripe.Python Flask post and return json objects
Я сделал шаг назад, чтобы упростить проблему. У меня есть сценарий python, который пытается отправить объект json с четырьмя парами значений в другую функцию, которая должна извлекать значения, создавать новый объект json и возвращать этот объект. Я не могу заставить его работать, и любая помощь будет очень признательна, поскольку я застрял на этом некоторое время. Я использую Настой:
`
import json
import stripe
import smtplib
import requests
from flask import Flask, request, jsonify
@application.route('/run_post')
def run_post():
url = 'http://xxx.pythonanywhere.com/stripetest'
data = {'stripeAmount': '199', 'stripeCurrency': 'USD', 'stripeToken': '122', 'stripeDescription': 'Test post'}
headers = {'Content-Type' : 'application/json'}
r = requests.post(url, data, headers=headers)
#return json.dumps(r.json(), indent=4)
return r.text
@application.route('/stripetest', methods=["POST"])
def stripeTest():
if request.method == "POST":
json_dict = json.loads(request.body.raw)
stripeAmount = json_dict['stripeAmount']
stripeCurrency = json_dict['stripeCurrency']
stripeToken = json_dict['stripeToken']
stripeDescription = json_dict['stripeDescription']
data = "{'stripeAmountRet': " + stripeAmount + ", 'stripeCurrencyRet': " + stripeCurrency + ", 'stripeTokenRet': " + stripeToken + ", 'stripeDescriptionRet': " + stripeDescription + "}"
return jsonify(data)
else:
return """<html><body>
Something went horribly wrong
</body></html>"""
`
я получаю возвращенную в журнале ошибок, когда я запускаю это:
`
2015-03-19 21:07:47,148 :Starting new HTTP connection (1): xxx.pythonanywhere.com
2015-03-19 21:07:47,151 :Exception on /stripetest [POST]
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/var/www/xxx_pythonanywhere_com_wsgi.py", line 156, in stripeTest
json_dict = json.loads(request.body.raw)
File "/usr/local/lib/python2.7/dist-packages/werkzeug/local.py", line 336, in __getattr__
return getattr(self._get_current_object(), name)
AttributeError: 'Request' object has no attribute 'body'
`
Привет, Джейсон, спасибо, что нашли время ответить. Вышеупомянутое решение сработало, и это позволило мне двигаться вперед.Теперь я могу прочитать входящий json-объект, который должен был бы связать его с моим приложением. – dickiebow
Рад слышать, что все работает сейчас! –
Спасибо .. это помогло мне работать с JSON тоже –