如何在Earth Explorer的API请求中正确使用POST

2024-10-06 06:56:39 发布

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

首先,谢谢,我对python非常陌生,我正在尝试理解API,我目前正在尝试登录到/inventory/json/v/1.4.1/<request_code>?jsonRequest=<json_request_content>这是地球资源管理器API,第一步是登录,根据文档,我应该使用POST而不是GET,这是我到目前为止得到的,它可以工作,但这是我想要的

import requests

import requests
user = 'xxxxx'
psword = 'xxxxx'

input_data= {'username':user,'password':psword,'catalogId':'EE'}
test=requests.post('https://earthexplorer.usgs.gov/inventory/json/v/1.4.0/login?jsonRequest=input_data)')

print(test.text)
print(test.status_code)
{
    "errorCode": "AUTH_ERROR",
    "error": "Passing credentials via URL is not permitted - use a POST request",
    "data": null,
    "api_version": "",
    "access_level": "guest",
    "executionTime": 0
}
200

我不知道该怎么办,非常感谢你。这是地球探索者API的文档,非常感谢https://earthexplorer.usgs.gov/inventory/documentation/json-api?version=1.4.1#login


Tags: 文档testimportapijson地球datarequest
1条回答
网友
1楼 · 发布于 2024-10-06 06:56:39

我在使用Earth Explorer API时遇到了同样的问题,并通过阅读usgs package code解决了这个问题。基本上,问题是您必须以字符串形式发送请求正文。也就是说,您的请求主体在打印时必须如下所示

{
    "jsonRequest": "{\"username\": \"???\", \"password\": \"???\", \"catalogId\": \"???\"}"
}

您可以使用

import json
import requests

req_params = {
    'username': '???',
    'password': '???',
    'catalogId': '???',
}
req_txt = json.dumps(req_params)
req_body = {
    'jsonRequest': req_txt,
}

resp = requests.post('<LOGIN URL HERE>', req_body)

这段代码实际上取自我提到的usgs package,所以如果您有任何其他问题,应该参考它

相关问题 更多 >