代码之家  ›  专栏  ›  技术社区  ›  Michal Grzelak

带变量的python3请求主体

  •  1
  • Michal Grzelak  · 技术社区  · 7 年前

    在使用请求发出HTTP POST请求时,我一直使用python3代码。我需要将变量“packageid”放入数据中并得到错误:

    {"meta":{"code":4015,"type":"Bad Request","message":"The value of `carrier_code` is invalid."},"data":[]}
    

    我的代码是:

    import requests
    import json
    
    PackageId = input("Package number:")
    
    headers = {
       'Content-Type': 'application/json',
       'Trackingmore-Api-Key': 'MY-API-KEY',
    }
    
    data = { 
       'tracking_number': PackageId,
       'carrier_code': 'dpd-poland'
    }
    request = requests.post('https://api.trackingmore.com/v2/trackings/post', headers=headers, data=data)
    

    使用的HTTP Post方法很好,因为我在正文中硬编码PackageID时,请求成功。

    data = '{ "tracking_number": "1234567890", "carrier_code": "dpd-poland" }'
    

    可能有什么问题?请帮忙,我卡住了,花了很多时间试图找到一个问题。

    下面是一个curl命令,我想复制它:

    curl -XPOST -H 'Content-Type: application/json' -H 'Trackingmore-Api-Key: MY-API-KEY' -d '{ "tracking_number": "01234567890", "carrier_code": "dpd-polska"  }' 'https://api.trackingmore.com/v2/trackings/post'
    

    谢谢!!!!

    1 回复  |  直到 7 年前
        1
  •  1
  •   cody    7 年前

    你需要转换 data 将JSON字符串提供给 post() ,它不会隐式发生:

    request = requests.post('https://api.trackingmore.com/v2/trackings/post', headers=headers, data=json.dumps(data))

    推荐文章