1

私はこのようなコードでPOSTリクエストを送信しようとするいくつかのAPIエンドポイントがあります

import requests
url = 'https://deviantart.com/api/v1/oauth2/collections/folders/create'
headers = {'Content-Type': 'application/json'}
data = {'folder': 'folder_name'}
params = {'access_token': '<authorization_code_flow_token>'}
r = requests.post(url=url,
                  headers=headers,
                  params=params,
                  json=data)
print(r.text)

しかし、私は400の応答を受け取ります:

{
  "error":"invalid_request",
  "error_description":"Request field validation failed.",
  "error_details":{"folder":"folder is required"},
  "status":"error"
}

curl を使用した例は正常に機能するため、なぜ失敗するのかわかりません。

curl https://www.deviantart.com/api/v1/oauth2/collections/folders/create \
-d "folder=Awesome Collection" \
-d access_token=Alph4num3r1ct0k3nv4lu3

そして、認証を取得するための投稿応答に成功しました。
content-type ヘッダー (json および x-www-formurlencoded) を変更し、データ ペイロードをさまざまな方法で渡そうとしました (json 文字列をデータ パラメータに渡す、dict を json に渡す、paylod をクエリ文字列として渡す)。しかし、うまくいきません。私は何が間違っているのか分かりません。ペイロードを間​​違って送信したり、間違ったヘッダーを付けたりしたようですが、多くの「組み合わせ」を試しましたが、まだ効果がありません。

次の 1 時間は、access_token: ba4550889c8c36c8d82093906145d9fd66775c959030d3d772を使用できます

4

1 に答える 1

2

次のコードが機能します。

import requests

url = "https://www.deviantart.com/api/v1/oauth2/collections/folders/create"

payload={'folder': 'Awesome Collection',
'access_token': 'ba4550889c8c36c8d82093906145d9fd66775c959030d3d772'}
files=[]
headers = {}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
于 2021-06-26T21:14:53.320 に答える