前提・実現したいこと
Python
でスマレジAPIを操作し、
json
形式のデータを取得したいと考えています。
発生している問題
proc_Name
という処理名がないため、不正パラメーターとなりエラーが発生しています。
試した事
- https://smaregi.jp/で自分のアカウントを作成し、実験しています。
- ソースで、
proc_Name
を指定していますが、特にエラーメッセージに影響は見られなかったです。 - プロセス名を指定したいため、
requests
のドキュメントにあるproc_name --name customer_ref
とオプションをつけても結果は変わりませんでした。
エラーメッセージ
python
1#print(r.reason) 2Bad Request 3 4#print(r.content) 5b'{"error_code":15,"error":"\u51e6\u7406\u540d\u304c\u7121\u52b9\u3067\u3059\u3002","error_description":"\u30d1\u30e9\u30e1\u30fc\u30bf\u4e0d\u6b63\u3067\u3059\u3002(procName is empty)"}' 6#上記の翻訳 7b'{"error_code":15,"error":"処理名が無効です。","error_description":"パラメータ不正です。(procName is empty)"}' 8 9#urlエンコードする前 10http://webapi.smaregi.jp/access/?proc_Name=customer_ref&fields=customerCode&fields=lastName&fields=firstName&conditions=customerId&order=customerCode+desc&limit=100&table_name=Customer 11#paramsをurlエンコードした結果 12#print(r.url) 13http://webapi.smaregi.jp/access/?%7B%27proc_Name%27%3A%20%27customer_ref%27%2C%20%27fields%27%3A%20%5B%27customerCode%27%2C%20%27lastName%27%2C%20%27firstName%27%5D%2C%20%27conditions%27%3A%20%5B%7B%27customerId%27%3A%20%27213%27%7D%5D%2C%20%27order%27%3A%20%5B%27customerCode%20desc%27%5D%2C%20%27limit%27%3A%20100%2C%20%27table_name%27%3A%20%27Customer%27%7D
該当のソースコード
python
1#coding: utf-8 2import requests 3import urllib 4import json 5 6#ベーシック認証用 7user_name = "xxxxxxxxxxxxxxx@gmail.com" 8password = "xxxxxxxx" 9 10#アクセスするURL 11url = "http://webapi.smaregi.jp/access/" 12 13#paramsを定義 14params = { 15 "proc_Name":"customer_ref", 16 "fields":["customerCode","lastName","firstName"], 17 "conditions":[{"customerId":"213"}], 18 "order":["customerCode desc"], 19 "limit":100, 20 "table_name":"Customer" 21} 22 23#json分解不可を回避 24params = urllib.parse.quote(str(params)) 25 26#headerを定義 27headers = { 28"X-access-token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 29"X-contract-id": "xxxxxxxx", 30"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" 31} 32 33#リクエストをPOST 34r = requests.post(url=url, params=params, headers=headers, auth=(user_name, password)) 35 36#結果を表示 37print(r.reason) 38print(r.content) 39print(r.url)
参考文献
「スマレジ APIのご紹介」のスライド
補足情報(FW/ツールのバージョンなど)
Mac OS X
requests==2.21.0
urllib3==1.24.1