Python 3.x flatter与flaskrestapi之间的数据解析

Python 3.x flatter与flaskrestapi之间的数据解析,python-3.x,api,post,flutter,flask,Python 3.x,Api,Post,Flutter,Flask,我正在尝试将我的颤振应用程序的请求发布到Flask REST API,使用POST MAN测试API没有问题,但在颤振上,我在颤振中遇到如下错误: I/flutter(6378):格式异常:意外字符(字符1处) I/颤振(6378): I/颤振(6378):^ 在Flask应用程序中,如下所示: [2020-01-23 11:42:32517]应用程序中的错误:卡上的异常[POST] 回溯(最近一次呼叫最后一次): wsgi_应用程序中的文件“/home/shaukat/.local/lib/p

我正在尝试将我的颤振应用程序的请求发布到Flask REST API,使用POST MAN测试API没有问题,但在颤振上,我在颤振中遇到如下错误:

I/flutter(6378):格式异常:意外字符(字符1处) I/颤振(6378): I/颤振(6378):^

在Flask应用程序中,如下所示:

[2020-01-23 11:42:32517]应用程序中的错误:卡上的异常[POST] 回溯(最近一次呼叫最后一次): wsgi_应用程序中的文件“/home/shaukat/.local/lib/python3.7/site packages/flask/app.py”,第2311行 response=self.full\u dispatch\u request() 文件“/home/shaukat/.local/lib/python3.7/site packages/flask/app.py”,第1834行,完整发送请求 rv=自身处理用户异常(e) 文件“/home/shaukat/.local/lib/python3.7/site packages/flask/app.py”,第1737行,在handle\u user\u exception中 重放(exc_类型、exc_值、tb) 文件“/home/shaukat/.local/lib/python3.7/site-packages/flask/_-compat.py”,第36行,在reraise中 增值 文件“/home/shaukat/.local/lib/python3.7/site packages/flask/app.py”,第1832行,完整发送请求 rv=自我分派请求() 文件“/home/shaukat/.local/lib/python3.7/site packages/flask/app.py”,第1818行,在调度请求中 返回self.view\u函数rule.endpoint 文件“/home/shaukat/Projects/udemy flask rest API和python/rest API sections master/section 3/app.py”,第19行,在创建卡中 “id”:请求_数据[“id”], TypeError:“非类型”对象不可下标 127.0.0.1--[23/Jan/2020 11:42:32]“POST/cards HTTP/1.1”500- 我在颤振中的代码:

第19行,在create_card'id':request_data[“id”]中,TypeError:'NoneType'对象不可订阅

如您所见,服务器无法获取数据/解析数据。 我建议在REST服务器中调试它,并检查是否接收到这些值。。 我知道
邮递员
对你很有用,但一旦你了解了你在服务器上得到了什么,那么就更容易修复flutter发送的内容了。 我猜
product.id
(颤振代码)是一个int而不是字符串。。 请发送更详细的调试信息以帮助解决此问题。
祝你好运。

我最终在这篇文章的评论中找到了解决办法

我必须添加
标题:{“内容类型”:“application/json”}

在我的请求中。感谢您在flask脚本中的帮助,
cards
来自何处?http.post(url,正文:json.encode({'id':product.id,'cardNo':product.cardNo,'cardType':product.cardType,'amount':product.amount,}),我已尝试在两端将整数更改为字符串,但仍然相同。thanksbut HTTP错误如下:“HTTP/1.0 500内部服务器错误在处理之前,您是否尝试对其进行调试并查看您在服务器中收到了什么?因为从我看来,问题似乎在服务器内部。我最终在对此的注释中找到了解决方案,我必须添加标题:{“Content Type”:“application/json”}在我的post请求中。感谢您的帮助,这解释了为什么服务器无法解析它,因为它不理解内容类型。很高兴您解决了它!
Future<void> addNewCard(NewCard product) async {
const url = 'http://10.0.2.2:5000/cards';
try {
  final response = await http.post(
    url,
    body: json.encode({
      'id': product.id,
      'cardNo': product.cardNo,
      'cardType': product.cardType,
      'amount': product.amount,
    }),
  );
  final newProduct = NewCard(
    id: json.decode(response.body)['id'],
    cardNo: product.cardNo,
    cardType: product.cardType,
    amount: product.amount,
  );
  print(newProduct);
  _newCard.add(product);
  // _items.insert(0, newProduct); // at the start of the list
  notifyListeners();
} catch (error) {
  print(error);
  throw error;
}}
@app.route('/cards', methods=['POST'])
def create_card():
    request_data = request.get_json()
    new_cards = {
        'id': request_data["id"],
        'cardNo': request_data["cardNo"],
        'cardType': request_data["cardType"],
        'amount': request_data["amount"],
   }
   cards.append(new_cards)
   return jsonify(cards)