Ошибка запроса GET для вызова API RESTFUL - PullRequest
0 голосов
/ 13 сентября 2018

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

Traceback (последний вызов был последним): File «/ Users / администратор / Library / Application Поддержка / Autodesk / webdeploy / Производство / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk сплавление 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py», строка 1254, в do_open Файл h.request (req.get_method (), req.selector, req.data, заголовки) "/ Пользователи / admin / Библиотека / Приложение Поддержка / Autodesk / webdeploy / Производство / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk сплавление 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py», линия 1107, по запросу Файл self._send_request (метод, URL, тело, заголовки) "/ Users / admin / Библиотека / Приложение Поддержка / Autodesk / webdeploy / Производство / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk сплавление 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py», строка 1152, в _send_request Файл self.endheaders (body) "/ Пользователи / admin / Библиотека / Поддержка приложений / 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) "/ Пользователи / admin / Библиотека / Приложение Поддержка / Autodesk / webdeploy / Производство / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk сплавление 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py», строка 934, в _send_output Файл self.send (msg) "/ Пользователи / Администратор / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk сплавление 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py», линия 877, отправка Файл self.connect () "/ Пользователи / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk сплавление 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/http/client.py», линия 1261, в соединении имя_сервера = имя_сервера) Файл "/ Пользователи / Администратор / Библиотека / Приложение Поддержка / Autodesk / webdeploy / Производство / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk сплавление 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ssl.py», строка 385, в wrap_socket _context = self) Файл "/ Пользователи / admin / Библиотека / Поддержка приложений / 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 /Библиотека / Техническая поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/ssl.py "self_dj_j_j_jl_ljjjj_d_l_ljjjj_d_ljj_js_d_s_b_s_d_s_t_l_l_b_s_d_l_b_l_5Файл .do_handshake () "/ Пользователи / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Curthon/li /.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 / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Curthon/lib/request.py ", строка 163, в urlopen Вернуться Файл opener.open (url, data, timeout) return" / Users / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks / Python.framework / Versions / Current / lib / python3.5 / urllib / request.py ", строка 466, в открытом файле ответа = файл self._open (req, data)" / Users / admin / Library / Application Support /Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py ", стр. 48, стр. 484), строка 484Файл "/ Пользователи / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks / Python.framework / Versions / Current / lib / python3.5 / urllib / request.py ", строка 444, в файле _call_chain result = func (* args)" / Пользователи / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy/ production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Current/lib/python3.5/urllib/request.py ", строка 1297, в контексте себя selfp_conf = self_chext = =._check_hostname) Файл "/ Users / admin / Библиотека / Поддержка приложений / Autodesk / webdeploy / production / a71844880b03ed71d4a9c581cd70965fd6323ebc / Autodesk Fusion 360.app/Contents/Frameworks/Python.framework/Versions/Currentreest/lip.py ", строка 1256, в do_open повысить URLError (err) urllib.error.URLError:

...