我正在制作一个 Django 网站,而且还很新。在这个 web 应用程序中,我需要使用这个 API,它将从数据库中输出一个包含请求数据的 xml 文件。API URL 基本上是:
https://adminuser:password@url.to.database.com/database.getdata?arg=1&arg2=0
所以在我的 python views.py 我有:
def fetch_xml(url):
import urllib
import xml.etree.cElementTree as xml_parser
u = urllib.URLopener(None)
usock = u.open(url)
rawdata = usock.read()
usock.close()
return xml_parser.fromstring(rawdata)
我从http://www.webmonkey.com/2010/02/integrate_web_apis_into_your_django_site/
但是,我在该行收到以下错误usock = u.open(url)
IOError at /webapp/
[Errno socket error] [Errno 1] _ssl.c:480: error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac
我在urllib
文档中读到,如果无法建立连接,则会引发 IOError。
http://docs.python.org/library/urllib.html
此外,在 Wikipedia 上,“Bad record MAC”致命警报意味着“可能是错误的 SSL 实现,或者有效负载已被篡改。例如,FTPS 服务器上的 FTP 防火墙规则。”
但我不明白的是,当我将 URL 粘贴到浏览器中时,它可以正常工作并吐出一个 XML 文件。
我还认为(从长远来看)它可能是我的 Apache 安装,所以我通过输入终端检查了 mod_ssl 是否正在加载,apachectl -t -D DUMP_MODULES
并且它是作为共享加载的。
任何想法将不胜感激。谢谢!