多数の文字列を翻訳し、urllib2 を使用してリクエストを API に送信しています。私のプログラムは正常に動作しますが、特に特定の文字列を翻訳するときに常に HTTP エラー 400 が発生します。私が行う各リクエストは、テキスト パラメータを除いてまったく同じです。そのため、何らかの理由でリクエストの形式が正しくないテキストである必要があると思います。これは、常にこのエラーを引き起こすことがわかっている2つの文字列です。
@monaeltahawy hatla2eh fel jym bytmrn wla 3arf en fe 7aga bt7sl :d
と
@yaratambash ta3aly a3zemek 3l fetar
例えば。
エラーの原因となっているのは「@」文字ではないこと、または「@」が文字列の先頭にあるという事実であることは確かです。API は、これらの属性を持つ文字列を以前に問題なく処理しました。
また、これらの文字列内の意味のない単語が問題を引き起こしているわけでもありません。これは、API が意味のない単語を以前にも適切に処理したことがあるからです。送信したのと同じ文字列を返すだけです。
エラーが発生していると思われるコードは次のとおりです。
tweet = tweet.encode("utf-8")
to = "en"
translate_params = { 'text' : tweet, 'to' : to }
request = urllib2.Request('http://api.microsofttranslator.com/v2/Http.svc/Translate?' + urllib.urlencode(translate_params))
request.add_header('Authorization', 'Bearer '+ self.access_token)
response = urllib2.urlopen(request)
# Removes XML tags to return only the translated text
response_text = ET.fromstring(response.read())
response_text = ET.tostring(response_text, encoding = 'utf8', method = 'text')
return response_text
Eclipse 4.3.2 で Python 2.7 を実行しています。
洞察や提案をいただければ幸いです。