使用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错误:
无法读取JSON:无法从JSON字符串实例化类型[simple type,classcom.linkco.ws.v1.model.V1SearchQuery]的值;没有单字符串构造函数/工厂方法
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客户端我会使用 - 它很好(很好 - 它'可能不是我找不到的原因。
答案 0 :(得分:1)
一个小错误导致你麻烦
response = requests.post('https://ws.foo.net/search',
json=jsonObject # was json.dumps(jsonObject),
auth=('name', 'password'))
这应该可以正常工作
请参阅,请求包将python dict转换为Json(不是你;))