请求REST FUL API调用失败GET

时间:2018-09-13 17:36:51

标签: python-requests urllib fusion360

我正在编写一个将在Fusion 360中运行的程序。Fusion360使用Python作为其脚本语言,并且提供了自己的Python。执行我的程序后,Fusion 360将其加载到Python中并运行。因此,我对Python环境没有任何控制权。只要它们在我的程序中是本地的,并且可以使用相对路径导入,就可以使用其他软件包,但我更喜欢使用Python标准库来避免重新交付更多组件及其依赖项的额外问题。

Fusion 360使用的是Python 3.5.3,我正在尝试进行一些RESTFUL API调用。在Windows上,一切都按预期方式运行,但在Mac上却失败了。我最初尝试使用请求,并假设失败是由于请求包引起的,但有人建议使用urllib代替标准库,并且由于相同的原因也失败了。

该代码适用于大多数标准网站(以下示例中的Google),但不适用于其他网站。在我的测试中,当端点是REST API时,它总是会失败,但是对于github.com,它也会失败,因此可能是一个麻烦。这是我经验很少的领域,可以使用一些有关如何调试和解决问题的建议。

import traceback
import urllib.request

def run(context):
    try:
#        url = 'https://github.com'
#        url = 'https://google.com'
        url = 'https://api.github.com'

        req = urllib.request.urlopen(url)
        print(req.read())
        req.close()    
    except:
        print(traceback.format_exc())

正如我之前所说,这在Windows上可以运行,但在Mac上则无法运行。这是失败的跟踪结果。

  

回溯(最近通话最近):文件   “ /用户/管理员/图书馆/应用程序   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,   在do_open中的1254行       h.request(req.get_method(),req.selector,req.data,标头)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py“,   1107行,应要求       self._send_request(方法,URL,正文,标题)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py“,   行_send_request中的1152行       self.endheaders(body)文件“ / Users / admin / Library / Application Support / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py“,   1103行,在标题中       self._send_output(message_body)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py“,   _send_output中的第934行       self.send(msg)文件“ / Users / admin / Library / Application Support / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py“,   发送中的第877行       self.connect()文件“ / Users / admin / Library / Application Support / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py“,   连接线1261       server_hostname = server_hostname)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ssl.py”,   第385行,在wrap_socket中       _context = self)文件“ / Users / admin / Library / Application Support / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ssl.py”,   第760行, init       self.do_handshake()文件“ / Users / admin / Library / Application Support / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ssl.py”,   996行,在do_handshake中       self._sslobj.do_handshake()文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ssl.py”,   第641行,在do_handshake中       self._sslobj.do_handshake()ssl.SSLError:[SSL:TLSV1_ALERT_PROTOCOL_VERSION] tlsv1警报协议版本   (_ssl.c:720)

     

在处理上述异常期间,发生了另一个异常:

     

回溯(最近通话最近):文件   “ /Users/admin/Dropbox/Scripts/RestfulTest/RestfulTest.py”,第23行,在   跑       req = urllib.request.urlopen(url)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,   urlopen中的第163行       返回opener.open(URL,数据,超时)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,   466号线,开放       响应= self._open(req,data)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,   _open中的第484行       '_open',要求)文件“ / Users / admin / Library / Application Support / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,   _call_chain中的第444行       结果= func(* args)文件“ / Users / admin / Library / Application Support / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,   第1297行,位于https_open       context = self._context,check_hostname = self._check_hostname)文件“ / Users / admin / Library / Application   支持/ Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk   融合   360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py”,   在do_open中的1256行       引发URLError(err)urllib.error.URLError:

0 个答案:

没有答案