Я использую приложение, написанное на Python 3.6.8 (для Android), которое возвращает эту ошибку с мобильных телефонов при доступе из urllib.request (Python3) в файл JSON URL-адреса, размещенного на веб-странице.
Это ошибка:
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
unable to get local issuer certificate (_ssl.c: 1051)
Запуск сценария с рабочего стола в Windows (W7) и в Linux (Ubuntu). У меня нет этой ошибки, и я получаю к ней доступ совершенно. Я искал возможные решения онлайн, но пока ничего. Кто-нибудь знает, как это исправить?
Я не понимаю, почему я могу запустить скрипт на Windows и Linux, а не на мобильном телефоне (Android). Нужно ли добавить код в скрипт? Спасибо
main.py
import socket
import ssl
import urllib.request # Para Python3
import urllib.error
from urllib.request import urlopen
class Api(Screen):
data_json = StringProperty("")
def data_api(self):
try:
url = "https://...../data.json"
request_json = urllib.request.Request(
url,
data=None,
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
)
context = ssl.SSLContext()
response = urllib.request.urlopen(request_json, context=context)
if response.getcode() == 401:
print("Acces:", str(response.getcode()))
if response.getcode() == 403:
print("Acces:", str(response.getcode()))
if response.getcode() == 200:
print("Access:", str(response.getcode()))
data = json.loads(response.read())
self.data_json = str(data)
print(data)
except (urllib.error.HTTPError) as e:
print("Error: ", e)