algorithm6 2022-04-13 20:27 采纳率: 76.2%
浏览 37
已结题

关于#API#的问题,如何解决?

我在编写下面程序时

#python3
#导入需要的库
import urllib.request
import urllib.parse
import json
import time
import base64
 #加载本地图片
image_path = '输入图片地址'
with open(image_path, 'rb') as f:  # 以二进制读取本地图片
    data = f.read()
    encodestr = str(base64.b64encode(data),'utf-8') # base64编码图片
#设置请求头
headers={'Authorization':'APPCODE 申请到的个人APPCODE',  # 填入个人APPCODE
 'Content-Type': 'application/json; charset=UTF-8'# 定义接口格式
    }
def posturl(url,data={}):
    try:
        params=json.dumps(dict).encode(encoding='UTF-8')
        req = urllib.request.Request(url, params, headers)
        r = urllib.request.urlopen(req)
        html =r.read()
        r.close();
        return html.decode("utf8")
    except urllib.error.HTTPError as e:
        print(e.code)
        print(e.read().decode("utf8"))
    time.sleep(1)
if __name__=="__main__":
url_request="https://gjbsb.market.alicloudapi.com/ocrservice/advanced"   # 对应官网API的URL
    dict = {'img': encodestr}
    html = posturl(url_request, data=dict)
    jos = json.loads(html.encode("utf-8").decode("utf-8"))    # str转json对象,<class 'dict'>
    result = jos['content']  # 获得参数结果
    print('识别的结果:',result)


出现下面的结果

img


请问是什么原因,要怎么解决?

  • 写回答

2条回答 默认 最新

  • 关注

    你这个 https://gjbsb.market.alicloudapi.com/ocrservice/advanced 地址无法访问
    r = urllib.request.urlopen(req)出错
    urllib.error.HTTPError: HTTP Error 400:

    posturl()函数中有错误 执行except语句块
    return html.decode("utf8")没有执行到, posturl()函数返回了None

    你用浏览器访问下https://gjbsb.market.alicloudapi.com/ocrservice/advanced 地址看看能不能访问

    另外

        return html.decode("utf8") utf8之间少了-号
    

    改成

        return html.decode("utf-8")
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月13日
  • 创建了问题 4月13日