Python的urllib2.urlopen()挂起了与Java Restlet服务器的本地连接
我正在尝试从python连接到本地运行的Restlet服务器,但连接无限挂起(或者如果我设置超时则超时)。
import urllib2 handle = urllib2.urlopen("http://localhost:8182/contact/123") # hangs
如果我使用shell中的curl
打开上面的URL,结果会很快返回。 如果我使用urllib2打开另一个本地服务(例如端口8000上的Django Web服务器),urllib2工作正常。
我试过禁用防火墙(我在OS X上这样做)。 我已经尝试将localhost更改为127.0.0.1。 除了用户代理之外,来自Restlet的curl和urllib2连接的日志显示相同。
我的解决方法是通过subprocess
调用curl
,但我宁愿理解为什么这会失败。
以下是我的Restlet资源的外观:
public class ContactResource extends ServerResource { @Get public String represent() throws Exception { return ""; } //.... }
如果您想要更多信息/代码,请告诉我
我遇到了类似的问题,最终使用了Requests包 。
urllib2中有ProxyHandler( http://docs.python.org/library/urllib2.html#urllib2.ProxyHandler )
尝试在urlopen之前将空字典传递给它
urllib2.ProxyHandler([]) handle = urllib2.urlopen("http://localhost:8182/contact/123")