【问题标题】:python request iugu return status 400python请求iugu返回状态400
【发布时间】:2015-12-08 07:00:34
【问题描述】:

我正在测试 api iugu.com 以生成票务支付,但我在帖子中返回信息时遇到了麻烦,因为有错误字典项被发送到 api(在 php 中将是一个数组)

代码是这样的:

from flask import Flask, Response, jsonify
import requests
from requests.auth import HTTPBasicAuth
import json

app = Flask(__name__)

@app.route("/")
def index():
    dados = {
        'method':'bank_slip',
        'email':'cliente@exemplo.com',
        'items[]':[
            {'description':'Item Um', 'quantity':1, 'price_cents': 100000},
            {'description':'Item Dois', 'quantity':1, 'price_cents': 200000}
        ]
    } 

    url = 'https://api.iugu.com/v1/charge' 
    user = '002f38a6d40b0275fc08aaac503a775b'
    headers = {'content-type': 'application/json'}

    r = requests.post(url, auth=HTTPBasicAuth(user, ''), headers = headers, params = json.dumps(dados))

    return jsonify(
        resposta = [
            r.json(),
            {
                'status': r.status_code,
                'cabecalho': r.headers['Content-Type'],
                'params': dados,
                'text': r.content,
                'url': r.url
            }
        ])

app.debug = True
app.use_reloader=True
app.run()

答案:

{
  "resposta": [
    {
      "errors": "token n\u00e3o \u00e9 v\u00e1lido"
    }, 
    {
      "cabecalho": "application/json; charset=utf-8", 
      "params": {
        "email": "cliente@exemplo.com", 
        "items[]": [
          {
            "description": "Item Um", 
            "price_cents": 100000, 
            "quantity": 1
          }, 
          {
            "description": "Item Dois", 
            "price_cents": 200000, 
            "quantity": 1
          }
        ], 
        "method": "bank_slip"
      }, 
      "status": 400, 
      "text": "{\"errors\":\"token n\\u00e3o \\u00e9 v\\u00e1lido\"}", 
      "url": "https://api.iugu.com/v1/charge?%7B%22email%22:%20%22cliente@exemplo.com%22,%20%22items[]%22:%20[%7B%22price_cents%22:%20100000,%20%22description%22:%20%22Item%20Um%22,%20%22quantity%22:%201%7D,%20%7B%22price_cents%22:%20200000,%20%22description%22:%20%22Item%20Dois%22,%20%22quantity%22:%201%7D],%20%22method%22:%20%22bank_slip%22,%20%22format%22:%20%22json%22%7D"
    }
  ]
}

如果您使用如下所示的网站示例:

'items[][description]':'Item Um', 
'items[][quantity]':'1', 
'items[][price_cents]':'100000', 

答案是正确的,但不能添加超过一项,因为它只排在第二位。 还有另一种发送数据的方法还是我做错了什么?

【问题讨论】:

  • 基于错误消息:“token não é válido”我会说您没有正确生成令牌:iugu.com/referencias/api#tokens-e-cobranca-direta
  • 令牌正确。由于项目错误,Api 将其返回。如果确实发生,则状态码 400 是返回状态码 200
  • 您可以尝试将变量命名为“items”而不是“items[]”吗?我认为文档将其称为“items []”以证明它是一个列表这一事实。 (但这可能是因为我看不懂葡萄牙语:))。
  • 我也试过了,错误还在继续

标签: python json dictionary flask python-requests


【解决方案1】:

收到了iugu.com的工作人员提示查看通过curl发送的数据,是postcatcher.in。在您启动此站点后,可以创建一个会话并将我的应用程序的 url 定向到浏览器中的 url。这使得实时跟踪正文选项卡成为可能,如果数据已发送或未发送到其他观察 cabeçarios 以及其他信息(发现它非常酷)

在这个网站上,我看到它没有发送,也没有发送任何你想要的东西,它帮助我看到请求的行是错误的。

使用正确的数据,而不是使用params

一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2018-02-25
    • 2018-07-13
    相关资源
    最近更新 更多