当data参数包含“&”符号时,如何发出HTTP POST请求?

时间:2019-05-31 01:37:25

标签: python

我正在尝试从LobbyView API访问有关游说支出的数据。根据他们网站上的文档,我正在使用POST请求来收集AT&T Inc和Apple Inc的游说数据。当我为Apple Inc运行以下代码时,API会按预期返回Apple的游说数据。

import requests, json
query = {"legal_name": "Apple Inc"}
results = requests.post('https://www.lobbyview.org/public/api/reports', data = json.dumps(query))
print(results.json())

但是,当我为AT&T Inc运行相同的代码时,API不会返回任何内容。

import requests, json
query = {"legal_name": "AT&T Inc"}
results = requests.post('https://www.lobbyview.org/public/api/reports', data = json.dumps(query))
print(results.json()) 

我认为问题在于AT&T Inc的名称中包含“&”号。 我应该如何调整代码,以便在data参数包含&符号(例如“ AT&T Inc”)时发出POST请求?

2 个答案:

答案 0 :(得分:1)

您可以尝试用%26或\&

替换

答案 1 :(得分:0)

您的请求是正确的。

您可以卷曲检查

curl -X POST https://www.lobbyview.org/public/api/reports -d '{"legal_name":"AT&T Inc"}'

返回空记录,但是

curl -X POST https://www.lobbyview.org/public/api/reports -d '{"client_name":"AT&T Services, Inc."}'

返回大量数据。因此问题不是“&”号,很可能是AT&T Inc.没有数据。