我正在尝试加载一个 json 文件,但它抛出了一个异常:
<urlopen error [Errno 104] Connection reset by peer>
这是我的代码(我在 shell 上执行它以进行测试/调试):
>>> import urllib2
>>> uri = 'https://api.mercadolibre.com/sites/MLA/search?q=camisas%20columbia'
>>> req = urllib2.Request(uri)
>>> resp = urllib2.urlopen(req)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/opt/bitnami/python/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/opt/bitnami/python/lib/python2.7/urllib2.py", line 400, in open
response = self._open(req, data)
File "/opt/bitnami/python/lib/python2.7/urllib2.py", line 418, in _open
'_open', req)
File "/opt/bitnami/python/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/opt/bitnami/python/lib/python2.7/urllib2.py", line 1215, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/opt/bitnami/python/lib/python2.7/urllib2.py", line 1177, in do_open
raise URLError(err)
URLError: <urlopen error [Errno 104] Connection reset by peer>
我正在使用在 VMWare 上虚拟化的 Ubuntu 12.04(64 位)Bitnami 的 Django Stack 1.4.3-0。
但是,我很好奇,并在我的主机(Windows 7 64 位)上尝试了相同的代码,我也安装了相同版本的 python,猜猜是什么......它完美地工作。
这是窗口输出:
C:\Users\Kevin>python
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import urllib2
>>> uri = "https://api.mercadolibre.com/sites/MLA/search?q=camisas%20columbia"
>>> req = urllib2.Request(uri)
>>> resp = urllib2.urlopen(req)
>>> resp.read()
'{"site_id":"MLA","query":"camisas columbia","paging": {"total":43,"offset":0,"limit":50},"results": [{"id":"MLA445360462","site_id":"MLA","title":"Ca
misa Columbia Silver Rider Hombre Tecnolog\xc3\xadas De Omni-dry" [...]
如何在 Ubuntu 中解决此问题?我尝试更改请求中的用户代理和内容,但结果在 Ubuntu 上始终相同。
还尝试手动复制 json 文件并将其上传到保管箱并运行与上述相同的代码,但使用保管箱 url 并且它在两个系统上都可以完美运行。
希望你们能帮助我,这让我发疯了,我的整个项目都依赖于那个该死的 api :(
在此先感谢,并为我糟糕的英语感到抱歉。