我编写了一个Python脚本来调用https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends上可用的API。我的问题是API应该生成一个CSV文件并将其存储在我的GCP上。该API采用5 string parameters
:keyword1
、keyword2
、start
、end
和country
。当我使用POSTMAN测试API时,我得到了一个200响应代码,并且csv
文件被正确地生成和存储。这是我在邮递员中的url:url = "https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends?keyword1=run&keyword2=sun&start=2019-02-01&end=2019-02-12&country=FR"
当我对同一服务上的同一POST请求使用Python代码时,它也会返回200响应代码,但不会生成/存储csv
文件。我试图直接在python函数上对url进行硬核处理,它正在工作,所以我认为我遗漏了一些东西,但我不知道是什么
def request_trends_service():
current_position = get_position_reader()
new_position, keyword_1 = read_line_from_csv(current_position)
new_position, keyword_2 = read_line_from_csv(new_position)
save_new_position(new_position)
url = "https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends?"
payload = {
"keyword1": keyword_1,
"keyword2": keyword_2,
"start": start,
"end": end,
"country": country
}
r = requests.post(url, params = payload)
print(r)
return r.status_code
更新(从邮递员导出中截取的代码):
import requests
url = "https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends?keyword1=run&keyword2=sun&start=2019-02-01&end=2019-02-12&country=FR"
payload = "{\n \"keyword1\": \"python\",\n \"keyword2\": \"java\",\n \"start\": \"01-01-2019\",\n \"end\": \"07-01-2019\",\n \"country\": \"gb\"\n}"
headers = {
'Content-Type': 'text/plain'
}
response = requests.request("POST", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
**更新2:我仍在尝试修复我的问题,我想即使我的Python函数返回了200个响应,我的代码中也有错误,但不确定是什么。我在“邮递员”中再次尝试,邮递员正在保存我的csv**
请尝试删除url末尾的“?”
如果您的请求在postman中有效,则可以尝试从postman接口将其导出到python:
然后选择“Python”并尝试代码
以下是我得到的:
编辑:
您可以使用urllib从有效负载dict中的编码参数创建url:
相关问题 更多 >
编程相关推荐