0

ヘッドレス Oauth 認証に関するこのブログ投稿をフォローしようとしています。

http://blog.databigbang.com/automated-browserless-oauth-authentication-for-twitter/

基本的には、jython を使用して Htmlunit を呼び出し、承認 Web ページを開いて受け入れようとしています。ただし、jython と httplib2 の間には非互換性があります。

File "/Users/andrey/jython2.7b1/Lib/site-packages/httplib2-0.8-py2.7.egg/httplib2/iri2uri.py", line 71, in iri2uri
    authority = authority.encode('idna')
LookupError: unknown encoding 'idna'

このエラーを修正するにはどうすればよいですか? encodings.idna をインポートすると、stringprep、re、コーデックもインポートする必要がありますが、これは jython にはありません。

4

1 に答える 1

1

Jython は idna をサポートしていません。代わりに、同じことをしたい場合は Java を呼び出す必要があります。

Unicode を IDNA ASCII 形式にエンコードするには:

import java.net.IDN
authority = java.net.IDN.toAscii(authority)

IDNA ASCII を Unicode にデコードするには:

authority = java.net.IDN.toUnicode(authority)

httplib2 (または他のライブラリ) を変更していて、他の Python 実装の機能を壊したくない場合は、次のようにすることができます:

import platform
if platform.python_implementation() == "Jython":
    import java.net.IDN
    # do IDNA things here
else:
    # use .encode('idna') Pythonically
于 2014-04-23T02:24:57.033 に答える