繁体   English   中英

使用Python 3+使用urllib或urllib2调用API [重复]

[英]Calling an API with urllib or urllib2 using Python 3+ [duplicate]

这个问题在这里已有答案:

试图调用我的Azure ML api,但我的urllib有问题。 我使用Python 3+,因此应该使用urllib而不是urllib2,但我对urllib中发生的事情以及为什么我收到错误消息感到困惑。

完整脚本:

import urllib2
# If you are using Python 3+, import urllib instead of urllib2

import json 


data =  {

    "Inputs": {

            "input1":
            {
                "ColumnNames": ["x", "x", "x"],
                "Values": [ ["x", "x", "x"]
            },        },
        "GlobalParameters": {
}
}

body = str.encode(json.dumps(data))

url = 'https://ussouthcentral.services.azureml.net/workspaces/xxxxxxxxxxxxxxxxxxx/services/xxxxxxxxxxxxxxxxxxxxx/execute?api-version=2.0&details=true'
api_key = 'xxxxxx'
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}

req = urllib.request.Request(url, body, headers) 

try:
    response = urllib.request.urlopen(req)


    result = response.read()
    print(result) 
except urllib2.HTTPError, error:
    print("The request failed with status code: " + str(error.code))
    print(error.info())
    print(json.loads(error.read()))   

在API的文档中,它说我应该使用urllib.request 问题似乎是这一行,所以我尝试改变它:

except urllib2.HTTPError, error:  

有了这个:

except urllib.request.HTTPError, error:

或者用这个:

except urllib.HTTPError, error:  

但没有效果

我得到的错误信息是:

  File "<ipython-input-14-d5d541c5f201>", line 37
    except urllib2.HTTPError, error:
                            ^
SyntaxError: invalid syntax

(第37行是上述“除外”)

我还试图完全删除第37行,但它导致了这个错误:

  File "<ipython-input-15-6910885cb679>", line 43
    print(json.loads(error.read()))
                                   ^
SyntaxError: unexpected EOF while parsing

意外的EOF通常是在我错过关闭时(或者{但我经过双重检查而无法找到它。我希望有人能够帮我找到问题。

错误消息非常明确:存在语法错误 (因此此问题与urllib完全无关)。 通过另一个更改冲突的行,它应该工作:

...    
except urllib2.HTTPError as error:
    # your error handling routine

另外,请查看有关如何处理异常的Python文档https://docs.python.org/2/tutorial/errors.html#handling-exceptions

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM