1

私のコードは次のようなものですが、実行するとエラーがスローされます。

search_request = urllib2.Request(url,data=tmp_file_name,headers={'X-Requested-With':'WoMenShi888XMLHttpRequestWin'})
#print search_request.get_method()
search_response = urllib2.urlopen(search_request)
html_data = search_response.read()

エラーは次のとおりです。

Traceback (most recent call last):
  File "xx_tmp.py", line 83, in <module>
    print hello_lfi()
  File "xx_tmp.py", line 69, in hello_lfi
    search_response = urllib2.urlopen(search_request)
  File "D:\Python27\lib\urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "D:\Python27\lib\urllib2.py", line 406, in open
    response = meth(req, response)
  File "D:\Python27\lib\urllib2.py", line 519, in http_response
    'http', request, response, code, msg, hdrs)
  File "D:\Python27\lib\urllib2.py", line 444, in error
    return self._call_chain(*args)
  File "D:\Python27\lib\urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "D:\Python27\lib\urllib2.py", line 527, in http_error_defau
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Internal Server Error

私はそれを修正する方法がわかりませんか?つまり、エラーが発生したときに、どうすればコードを引き続き機能させることができるでしょうか?

使ってみると

       try:
                search_response = urllib2.urlopen(search_request)
            except urllib2.HTTPError:
                pass

新しいエラー

UnboundLocalError: local variable 'search_response' referenced before assignment

私が使う

global search_response

そしてエラーがあります

NameError: global name 'search_response' is not defined
4

2 に答える 2

1

例外をキャッチできます。これにより、プログラムが「突然」停止するのを防ぐことができます。

try:
  search_response = urllib2.urlopen(search_request)
except urllib2.HTTPError:
  print 'There was an error with the request'

続行したい場合は、次のようにします。

try:
  search_response = urllib2.urlopen(search_request)
except urllib2.HTTPError:
  pass

これにより、プログラムを続行できます。しかし、他のステートメントhtml_data = search_response.read()では期待される結果が得られません。この問題を完全に修正するには、リクエストをデバッグして、失敗した理由を確認する必要があります。これは Python に固有のものではありません。

于 2012-12-24T11:38:31.603 に答える
0

大きな投稿リクエストを GAE Python サーバーに送信しようとしたときに、同じエラーが発生しました。受信した POST 文字列を db.StringProperty() に書き込もうとしていたため、サーバーがエラーをスローしたことが判明しました。それを db.TextProperty() に変更したところ、エラーは発生しなくなりました。

ソース: Python で appengine の 500 バイト文字列制限を克服しますか? テキストを考慮する

于 2013-11-27T02:17:56.423 に答える