在 Python 3 中使用 Microsoft Cognitive Computer Vision API 时收到 TypeError

TypeError received when using Microsoft Cognitive Computer Vision API in Python 3

我是 Python 和 Microsoft 认知服务的新手。 我正在尝试计算机视觉 API 的示例,我正在尝试 POST 图像的 URL 进行分析,下面是我的代码 -

import http.client, urllib.request, urllib.parse, urllib.error, base64

MICROSOFT_CV_SUBSCRIPTION_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

headers = {
   # Request headers
   'Content-Type': 'application/json',
   'Ocp-Apim-Subscription-Key': MICROSOFT_CV_SUBSCRIPTION_KEY,
}

params = urllib.parse.urlencode({
   'visualFeatures': 'Categories,Adult,Faces,Description,ImageType',
   'details': 'Celebrities',
   'language': 'en',
})

data = {
    'url':'http://img.wennermedia.com/article-leads-vertical-300/1250530894_brad_pitt_290x402.jpg',
}

try:
    conn = http.client.HTTPSConnection('api.projectoxford.ai')
    conn.request("POST", "/vision/v1.0/analyze?%s" % params, data, headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

但我每次都收到以下异常。有人可以帮忙吗?

TypeError:无法散列的类型:'slice' 第 23 行,在 conn.request("POST", "/vision/v1.0/analyze?%s" % params, data, headers)

TypeError: 需要一个类似字节的对象,而不是 'str'

在处理上述异常的过程中,又发生了异常:

回溯(最后一次调用): 文件 "D:/Users/aa/PycharmProjects/untitled/Demo2/ComputerVisionAPIDemo",第 29 行,位于 print("[Errno {0}] {1}".format(e.errno, e.strerror)) AttributeError: 'TypeError' 对象没有属性 'errno'

正文需要适当的字符串化:

conn.request("POST", "/vision/v1.0/analyze?%s" % params, str(data), headers)