yahoo APIについて質問です。
https://developer.yahoo.co.jp/webapi/shopping/getStock.html
上記より、PHPのサンプルコードがあります。
<?php $header = [ 'POST /ShoppingWebService/V1/getStock HTTP/1.1', 'Host: circus.shopping.yahooapis.jp', 'Authorization: Bearer ' . <アクセストークン> ]; $url = 'https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/getStock'; $param = array( "seller_id" => '<ストアアカウント>', "item_code" => '<商品コード>', ); // 必要に応じてオプションを追加してください。 $ch = curl_init(); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); $response = curl_exec($ch); curl_close($ch); ?>
これをpythonで対応したく下記のように作成しました。
import urllib.request import json token = '<アクセストークン>' seller_id = '<ストアアカウント>' item_code = '<商品コード>' url = 'https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/getStock' method = 'POST' req_header = { 'Host': 'circus.shopping.yahooapis.jp', 'Authorization': 'Bearer ' + token, } obj = { "seller_id": seller_id, "item_code": item_code, } req_data = json.dumps(obj).encode() req = urllib.request.Request( url, data=req_data, method=method, headers=req_header) try: with urllib.request.urlopen(req) as response: body = json.loads(response.read()) headers = response.getheaders() status = response.getcode() except urllib.error.URLError as e: print(e.reason)
PHPであれば期待のレスポンスが返ってきますが、
Pythonではurlopenで「HTTP Error 400: Bad Request」となります。
基礎の間違いだと思うのですがどこに誤りがあるのか分からずかなりの時間停滞しています。
ヒント等お力添え頂けないでしょうか?
あなたの回答
tips
プレビュー