gpt4 book ai didi

使用 json.dump 时 Python 请求 post 失败

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:16 24 4
gpt4 key购买 nike

使用 requests 将 JSON 发布到 Web 服务。像这样输入 JSON 可以工作:

response = requests.post('https://ws.foo.net/search',
json=({
"filters": [
{
"filters": [
{
"field": "type",
"type": "EQ",
"value": "THING"
}
]
},
{
"filters": [
{
"field": "responseCode",
"type": "EQ",
"value": "301"
},
{
"field": "responseCode",
"type": "EQ",
"value": "302"
}
]
},
{
"filters": [
{
"field": "State",
"type": "EQ",
"value": "CONFIRMED"
}
]
}
]
}), auth=('name', 'password'))

我想在 JSON 中使用变量,因此使用 json.dumps 从字典构建变量。

下面会产生 400 错误:

Could not read JSON: Can not instantiate value of type [simple type, classcom.linkco.ws.v1.model.V1SearchQuery] from JSON String; no single-String constructor/factory method

import json
import requests


jsonObject = {'filters': [{'filters': [{'field': 'type','type': 'EQ','value': 'WEB_SITE'}]},{'filters': [{'field': 'name','type': 'EQ','value': 'something'}]},{'filters': [{'field': 'State','type': 'EQ','value': 'CONFIRMED'}]}]}

response = requests.post('https://ws.foo.net/search', json=json.dumps(jsonObject), auth=('name', 'password'))


print json.dumps(jsonObject)
print '----'
print response.text

我正在打印 json.dumps(jsonObject) 进行检查,它会生成有效的 JSON,并且如果复制到我正在使用的 REST 客户端,它就可以工作 - 这很好(嗯 - 它可能不适合我没能找到一个原因)。

最佳答案

一个小错误给你带来了麻烦

response = requests.post('https://ws.foo.net/search', 
json=jsonObject # was json.dumps(jsonObject),
auth=('name', 'password'))

这应该可以正常工作

看,请求包会将python dict转换为Json(不是你;))

关于使用 json.dump 时 Python 请求 post 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com