gpt4 book ai didi

xml - 带有 SSL IO 错误的 Django 请求 XML 文件

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:31 25 4
gpt4 key购买 nike

我正在制作一个 Django 网站并且是相当新的。在这个 webapp 中,我需要使用这个 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此外,在维基百科上,“Bad record MAC”致命警报意味着“可能是错误的 SSL 实现,或者负载已被篡改。例如,FTPS 服务器上的 FTP 防火墙规则。”

但我不明白的是,当我将 URL 粘贴到我的浏览器时它工作正常并吐出一个 XML 文件。

我还认为(从长远来看)这可能是我的 Apache 安装,所以我通过在终端中键入 apachectl -t -D DUMP_MODULES 来检查是否正在加载 mod_ssl,它是作为共享加载的。

任何想法将不胜感激。谢谢!

最佳答案

我的同事得到了在 PHP 中工作的 API,所以我看了一下他的代码,他使用的是 cURL。我发现有一个名为 PycURL 的 python 版本。安装 PycURL 后,我删除了 urllib 代码并改用 PycURL。

import pycurl

c = pycurl.Curl()
c.setopt(pycurl.URL, authenticate_url)
c.setopt(pycurl.SSLVERSION, 3)
c.setopt(pycurl.SSL_VERIFYPEER, False)
c.setopt(pycurl.SSL_VERIFYHOST, 2)
c.setopt(pycurl.USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)')

outputXML = c.perform()
c.close()

我猜 urllib 不如 PycURL 健壮。

关于xml - 带有 SSL IO 错误的 Django 请求 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3134666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com