GAEにアクセスするPythonスクリプトで405エラー(Method Not Allowed)
トップページ> "> Webサービス "> GoogleAppEngine

GAEにアクセスするPythonスクリプトで405エラー(Method Not Allowed)

 GAEで適当なサンプルをコピーして画像アップローダを作り、ローカルのPythonからファイルを自動アップロードしようとした際、405 Method Not Allowedというエラーが出てきた。

Traceback (most recent call last):
  File "C:\Program Files\Smith Micro\Poser Pro 2010\Runtime\Python\poserscripts\pose360\upload.py", line 30, in ?
    print urllib2.urlopen(req).read()
  File "./Runtime\Python\Lib\urllib2.py", line 130, in urlopen
    return _opener.open(url, data)
  File "./Runtime\Python\Lib\urllib2.py", line 364, in open
    response = meth(req, response)
  File "./Runtime\Python\Lib\urllib2.py", line 471, in http_response
    response = self.parent.error(
  File "./Runtime\Python\Lib\urllib2.py", line 402, in error
    return self._call_chain(*args)
  File "./Runtime\Python\Lib\urllib2.py", line 337, in _call_chain
    result = func(*args)
  File "./Runtime\Python\Lib\urllib2.py", line 480, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 405: Method Not Allowed

 ローカルのPythonは、GAEのURL(http://xxx.appspot.com/ ←仮のURL)に対して、画像をPostするというもの。レンタルサーバ上にテスト用に設置した掲示板には問題なくアップロードできた。

 また、GAEに設置した画像掲示板にはブラウザ経由だと、正しく画像がアップロードできた。

原因

 urllib2.urlopen(req).read()で指定URLにPostしたのだが、http://xxx.appspot.com に対してPostしたのがまずかった。

 正しくは、http://xxx.appspot.com/uploadにすべきだったのだ。

 ダッシュボードのLogsで、ブラウザから正常アップロードできていたときのログを見て気がついた。

 

 
▲アップロード時は/uploadにアクセスしている!?

対処方法

 すでに書いたけども、URLを http://xxx.appspot.com/upload にすれば動いた。

 単純なことなんだけども、これがわかるまでに丸一日かかって悔しすぎるので、せめてこの場所に記録しておくことにしよう。

 

  はてなブックマーク - GAEにアクセスするPythonスクリプトで405エラー(Method Not Allowed)  この記事にTwitterでつぶやく このページをはてなブックマーク


nenshu.png
予測年収600万円以下なら会社にしがみつけ?だと?


次の時刻変換 UTCからJSTへへ
トップページ> "> Webサービス "> GoogleAppEngine もくじ