Python的urllib2.urlopen()挂起了与Java Restlet服务器的本地连接

时间:2011-11-30 19:51:09

标签: java python curl urllib2 restlet

我正在尝试从python连接到本地运行的Restlet服务器,但连接无限挂起(或者如果我设置超时则超时)。

import urllib2
handle = urllib2.urlopen("http://localhost:8182/contact/123") # hangs

如果我使用shell中的curl打开上述网址,结果会很快返回。如果我使用urllib2打开另一个本地服务(例如端口8000上的Django Web服务器),urllib2工作正常。

我尝试过禁用防火墙(我在OS X上这样做)。我已经尝试将localhost更改为127.0.0.1。除了用户代理之外,来自Restlet的curl和urllib2连接的日志显示相同。

我的解决方法是通过curl致电subprocess,但我更理解为什么会失败。

以下是我的Restlet资源的外观:

public class ContactResource extends ServerResource {

  @Get
  public String represent() throws Exception {
    return "<contact details>";
  }
  //....
}

如果您想要更多信息/代码,请告诉我

2 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,最后使用了Requests package

答案 1 :(得分:0)

urllib2中有ProxyHandler(http://docs.python.org/library/urllib2.html#urllib2.ProxyHandler

尝试在urlopen之前将空字典传递给它

urllib2.ProxyHandler([])
handle = urllib2.urlopen("http://localhost:8182/contact/123")