2017-08-30 8 views
1

USGS EarthExplorerインベントリAPIにPOSTリクエストを送信しようとしています。これは簡単なログインから始まります。pythonリクエストでJSONをフォーマットするpostコマンド用のパッケージ...?URLのjsonRequestパラメータ

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

あなたには、いくつかの書式設定の例を参照することができます:彼らは、テストページを持っています。ログインたとえば、私は(ユーザーとPWが変更されている)として、ボタンの押しに提出されたURLを抽出することができました:

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で私は他の人には開放されていますが、現在はリクエストを使用しています。私は存在していない私のusernameパラメータを聞いていrequests.post(url, json=payload)を呼び出すと

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

payload = json.dumps(creds) 

:私は辞書を作成しようとしています。私はデータとparamsのような他のキーワードも試しました。

私は成功したURLでjsonRequestパラメータに気づいたので、私はとしてそこにあるものと辞書を作成してみました:

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

が、これはどちらか動作しません。

提案がありますか?ありがとう!

答えて

1

あなたはGETリクエストを送信し、params引数を使用してクエリ文字列にcredを渡す必要があります。

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()) 
+0

素晴らしい、ありがとうございました。私はあまりにも良いすべてのポストコマンドでそれを試してみました。 – JoeMcG

関連する問題