Jython和httplib2

时间:2013-07-16 16:34:31

标签: jython htmlunit

我正在尝试关注这篇关于无头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没有。

1 个答案:

答案 0 :(得分: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