正在用python请求包格式化post命令的JSON。。。?URL中的jsonRequest参数

2024-10-06 07:07:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试提交一个POST请求到USGS earthxplorer库存API。这从简单的登录开始。他们有一个测试页面:

https://earthexplorer.usgs.gov/inventory/documentation/test

它允许您查看一些格式化示例。对于登录示例,我能够提取按钮按下时提交的URL(user和pw已更改):

https://earthexplorer.usgs.gov/inventory/json/v/1.4.0/login?jsonRequest=%7B%22username%22%3A%22user%22%2C%22password%22%3A%22pw%22%2C%22catalogId%22%3A%22EE%22%7D

但是,我似乎不知道如何使用请求库在Python中格式化它。我对其他人开放,但现在使用请求。我曾尝试创建一个字典:

creds = {"username": "user",
  "password": "pw",
  "authType": "",
  "catalogId": "EE"}

payload = json.dumps(creds)

当我调用requests.post(url, json=payload)时,我被告知我的username参数不存在。我也尝试过其他关键字,比如data和params。你知道吗

我注意到成功URL中的jsonRequest参数,因此我尝试创建一个字典,其中包含:

creds2={"jsonRequest": [{"username": "user",
                    "password": "pw",
                    "authType": "",
                    "catalogId": "EE"}]} 

但这也不行。你知道吗

有什么建议吗?谢谢!你知道吗


Tags: httpsjsonurl示例字典usernamepasswordgov
1条回答
网友
1楼 · 发布于 2024-10-06 07:07:49

您必须发送一个GET请求,并使用^{}参数在查询字符串中传递creds。你知道吗

creds = {
    "username": "user",
    "password": "pw",
    "authType": "",
    "catalogId": "EE"
}
url = 'https://earthexplorer.usgs.gov/inventory/json/v/1.4.0/login'
r = requests.get(url, params={'jsonRequest':json.dumps(creds)})
print(r.json())

相关问题 更多 >