Ошибка запроса GET для вызова API RESTFUL

Я пишу программу, которая будет работать внутри Fusion 360. Fusion 360 использует 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. Вот следовые результаты сбоя.

Трассировка (последний вызов был последним): Файл "/ Пользователи / admin / Библиотека / Поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Curthon/live 5/urllib/request.py", строка 1254, в файле do_open h.request(файл req.get_method(), req.selector, req.data, заголовки)" / Пользователи / admin / Библиотека / Поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py", строка 1107, в свойстве self._sere заголовки) Файл "/ Пользователи / admin / Библиотека / Поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/ttp. py ", строка 1152, в файле _send_request self.endheaders(body)" / Пользователи / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a7 1844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py ", строка 1103, в файлах конечных пользователей self._ / endbody output пользователя (message /)" / Библиотека / Техническая поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/line_in_pase_setup_in_setup_setup_in_set_in_setup_cate_in_set_int_setup_c_set_in_setup_c_set_in_set_set_setup_c_set_in_set_set_setup_c_set_in_set_set_setup_c_set_1_1_p_1_1_p_1_1_1_1_p_1_1_p_1 Файл self.send(msg) "/Users/admin/ Библиотека / Поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Curthon/lib http / client.py ", строка 877, в файле отправки self.connect()" / Users / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework /Versions/Current/lib/python3.5/http/client.py ", строка 1261, в файле connect server_hostname=server_hostname) Файл "/Users/admin/ Библиотека / Поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/liss/py, строка 385, в файле wrap_socket _context=self) File "/Users/admin/ Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.frameurCur/python3.5/ssl.py", строка 760, в файле init self.do_handshake () init " / Users / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Fraworks.framework/Versions/Current/lib/python3.5/ssl.py", строка 996, в файле do_handshake self._sslobj.do_handshake()" / Пользователи / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581d6965 Autodesk Fusion 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)

Во время обработки вышеупомянутого исключения произошло другое исключение:

Traceback (последний вызов был последним): Файл "/Users/admin/Dropbox/Scripts/RestfulTest/RestfulTest.py", строка 23, в файле req = urllib.request.urlopen(url) run "/Users/admin/Library/ Служба поддержки /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.er, inline, inline. открыть (url, data, timeout) Файл "/Users/admin/ Библиотека / Поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Curthon/liver 5/urllib/request.py", строка 466, в открытом ответе = файл self._open(req, data)" / Users / admin / Библиотека / Поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py", строка 484, в файле _open '_open', req)" / Users / admi n / Библиотека / Техническая поддержка приложений /Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/reest.in 44. inest.pl _call_chain result = func(*args) File "/Users/admin/Library/ Support Support/Autodesk/webdeploy/production/a71844880b03ed71d4a9c581cd70965fd6323ebc/Autodesk Fusion 360.app/Contents/Frameworks/Python.frameworkur/lib.bers.versions. 5/urllib/request.py", строка 1297, в контексте https_open =self._context, файл check_hostname=self._check_hostname) Файл" / Users / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd632kcc. app / Contents / Frameworks / Python.framework / Versions / Current / lib / python3.5/urllib/request.py", строка 1256, в do_open повысить URLError(err) urllib.error.URLError:

0 ответов

Другие вопросы по тегам