URLFetch недоступен в этой среде - cx_Freeze - PullRequest
1 голос
/ 08 июля 2019

Я упаковываю свое приложение с помощью cx_Freeze.Я использую requests.post для извлечения JSON, но получаю ошибку.

AppEnginePlatformError: URLFetch недоступен в этой среде.

from base64 import b64encode
import json
import requests

api_key = **************
ENDPOINT_URL = 'https://vision.googleapis.com/v1/images:annotate'

with open(row.path, 'rb') as f:
print(row.path)
ctxt = b64encode(f.read()).decode()
img_requests.append({
        'image': {'content': ctxt},
        'features': [{
            'type': 'TEXT_DETECTION',
            'maxResults': 1
        }]
})
img_encode = json.dumps({"requests": img_requests }).encode()
response = requests.post(ENDPOINT_URL,data=img_encode, verify=True,params={'key': api_key},
                         headers={'Content-Type': 'application/json'})

Чтоя должен сделать вместо requests.post я должен использовать urllib или что-то еще?

1 Ответ

1 голос
/ 08 июля 2019

Я использовал urllib и теперь работает нормально.

Код:

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
            'Accept-Encoding': 'none',
            'Accept-Language': 'en-US,en;q=0.8',
            'Connection': 'keep-alive'}
req = urllib.request.Request(url=ENDPOINT_URL + api_key, headers=hdr)
req.add_header('Content-Type', 'application/json')
response = urllib.request.urlopen(req, img_encode)
...