0

我正在尝试关注这篇关于无头 Oauth 身份验证的博客文章:

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

基本上我正在尝试使用 jython 调用 Htmlunit,打开授权网页并接受它。但是 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 回答