【问题标题】:Python script from Postman Edit payload to parse string来自 Postman 的 Python 脚本编辑有效负载以解析字符串
【发布时间】:2020-10-06 15:40:37
【问题描述】:

在 Postman 窗口中,我可以使用以下有效负载将数据写入数据库而不会出现问题

payload = "{\"Items\": [{\"SystemId\": \"FPC\",\"EngagementId\": \"40211\",\"DE_LOD_INF_LAND_LAT\":\"20.000000\", \"DE_LOD_INF_LAND_LONG\":\"50.000000\"},{\"SystemId\": \"FPC\",\"EngagementId\":\"67039\",\"DE_LOD_INF_LAND_LAT\":\"0.000000\", \"DE_LOD_INF_LAND_LONG\": \"60.000000\"}]}\r\n"

我希望在 Postman 之外的 python 代码中用以下字符串替换它;

p='[{"SystemId": "FPC", "EngagementId": "40211", "DE_LOD_INF_LAND_LAT": "0.000000", "DE_LOD_INF_LAND_LONG": "0.000000"}, {"SystemId": "FPC", "EngagementId": "67039", "DE_LOD_INF_LAND_LAT": "0.000000", "DE_LOD_INF_LAND_LONG": "0.000000"}]'

我使用以下代码进行替换;

url = "url"

payload = '"{\"Items\": '+ p + '}"'
headers = {
  'Authorization': access_token.split('"')[3],
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

p 打印为

"{"Items": [{"SystemId": "FPC", "EngagementId": "40211", "DE_LOD_INF_LAND_LAT": "0.000000", "DE_LOD_INF_LAND_LONG": "0.000000"}, {"SystemId": "FPC", "EngagementId": "67039", "DE_LOD_INF_LAND_LAT": "0.000000", "DE_LOD_INF_LAND_LONG": "0.000000"}]}"

我收到以下错误;

b'{"Messages":[{"code":"WEBSVC0020","Message":"The request object could not be parsed. Please check the structure of your request.","NotificationType":"Error","iserror":true}]}'

我怎样才能纠正这个问题?或者我还有什么其他选择,因为 p 不是静态的,我不能在脚本中硬编码?

【问题讨论】:

    标签: python-3.x python-requests postman payload postman-pre-request-script


    【解决方案1】:

    为什么不使用json 模块?

    试试这个:

    import json
    
    url = "url"
    p = '[{"SystemId": "FPC", "EngagementId": "40211", "DE_LOD_INF_LAND_LAT": "0.000000", "DE_LOD_INF_LAND_LONG": "0.000000"}, {"SystemId": "FPC", "EngagementId": "67039", "DE_LOD_INF_LAND_LAT": "0.000000", "DE_LOD_INF_LAND_LONG": "0.000000"}]'
    payload = {'Items': json.loads(p)}
    
    print(payload['Items'][0]['SystemId'])
    headers = {
        'Authorization': access_token.split('"')[3],
        'Content-Type': 'application/json'
    }
    
    response = requests.request("POST", url, headers=headers, data=json.dumps(payload))
    
    print(response.text.encode('utf8'))
    

    【讨论】:

    • 好东西。感谢您的快速帮助
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2021-06-24
    • 2021-12-27
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多