withingsのfitファイルをそのままgarminconnectに投げる運用をしてたけど2/15から同期に失敗してた。
というのを今週になって気づいた…
ってことで改修作業。
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 403: Forbidden
エラーをみると
どうもリクエストヘッダーまわりくさい。
何かサーバー側で仕様が変更されたんだろうという推測はできるが、問題はその何か。
ユーザー登録してAPIの詳細なドキュメントやリリースノートを読めばわかるのかもしれないけど、そこはなんとなく面倒なので別の方向からアプローチ。
ってことで、webからアップロードしてみてその挙動を調べてみた。
なんか見たことのないリクエストヘッダーを発見。RFC的にありなんだっけ?(ありっぽい)
なんとなくあやしいのでこのヘッダーとvalueを追加してみた。garmin.pyの156行あたりに追加。
req = urllib2.Request(self.UPLOAD_URL) req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary) + req.add_header('nk': 'NT')
結果としては正解。無事動くようになった!
ってか、半月近く気づかなかったのはいかがなものか?!
(一応、体重計には毎日乗ってました)
githubは変更済。