2018-03-10

Python requestsでrequest bodyがJSON形式のデータを送信する方法

Pythonで、requestsを利用している際に、request bodyがJSON形式のデータを送信したかった。その際にはまったことの忘備録。





やりたかったことは、Microsoft Face APIを、Python上で利用したかった。

{"error":{"code":"BadArgument","message":"Request body is invalid."}}

というエラーが出てきてしまって、うまくいかなかった。

原因


JSON形式でrequest bodyを送信できていなかった。元のコードは、

    end_point = BASE_URL + "persongroups/" + GROUP_NAME
    payload = {
        "name": GROUP_NAME
    }
    headers = {
        "Ocp-Apim-Subscription-Key" :SUBSCRIPTION_KEY
    }
    r = requests.put(
        end_point,
        headers = headers,
        params = payload
    )

こんな感じで書いていたんだけど、JSONの処理がされていなかった。
requests.putのdictにparamsではなく、jsonを指定してあげれば解決した。

 end_point = BASE_URL + "persongroups/" + GROUP_NAME
    payload = {
        "name": GROUP_NAME
    }
    headers = {
        "Ocp-Apim-Subscription-Key" :SUBSCRIPTION_KEY
    }
    r = requests.put(
        end_point,
        headers = headers,
        json = payload
    )

こんな感じに治してあげたら治った。

参考
https://stackoverflow.com/questions/40354658/microsoft-face-api-verify-for-python

注目の投稿

めちゃくちゃ久しぶりにこのブログ書いたw 更新3年ぶりw > 多様性というゲームは尊厳と自由を勝ち取るゲームなのかもしれないな。  もともとツイッターでツイートした内容なんだけど、ちょっと深ぼる。 ----- 自分は男 x 30代x 二児の父 x 経営者 x 都心(共働き世...