URLFetch在此环境中不可用-cx_Freeze

时间:2019-07-08 10:42:33

标签: python-3.x cx-freeze

我正在用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 个答案:

答案 0 :(得分:1)

我使用了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)