因此,我试图获得服务的输出,但总是得到相同的错误:{"code":401, "error": "Unauthorized"}
如果我在cURL中尝试它,它就能工作:
$ curl -X POST -u "apikey: ------------" -F "images_file=@bobross.jpg" "https://gateway.watsonplatform.net/visual-recognition/api/v3/detect_faces?version=2018-03-19"
{ facerecognition data }到目前为止,我的python代码:
import json
import sys
import requests
header= { 'apikey': '---------', 'Content-Type': 'FaceCharacteristics'}
url= "https://gateway.watsonplatform.net/visual-recognition/api/v3/detect_faces?version=2018-03-19"
file ={image:open('bobross.jpg','rb')}
r = requests.post(url, headers=header, files=file)
print(r.text)我尝试了我的代码在其他变体,但它总是导致“未经授权”。顺便说一句,我对蟒蛇没有什么经验,我还在努力学习。
发布于 2018-06-19 13:56:07
在您的curl示例中,您使用-u标志传递身份验证,而在python中,您将它按原样传递到头中。服务器忽略了标头中的身份验证,您将得到我们预期的401。
为了让生活变得更简单,我们可以使用auth=('apikey', '[An API Key]')作为命名参数,将我们的详细信息传递到请求本身。
从头中删除Content-Type: FaceCharacteristics也是值得的--不太确定这是在哪里捡到的。
import requests
url = 'https://gateway.watsonplatform.net/visual-recognition/api/v3/classify?version=2018-03-19'
files = {'images_file': open('fruitbowl.jpg','rb')}
resp = requests.post(url, auth=('apikey', '[An API Key]'), files=files)
print(resp.content)最后,添加文件,您应该都设置好了。
这里有更多关于请求的信息
,但是,,如果您做的比这更多的话。
您可能想看看IBM提供的Python。它有更多您可以使用的文档和示例代码。
例如,这是提供的。
import json
from watson_developer_cloud import VisualRecognitionV3
visual_recognition = = VisualRecognitionV3(
version='{version}',
api_key='{api_key}'
)
with open('./fruitbowl.jpg', 'rb') as images_file:
classes = visual_recognition.classify(
images_file,
threshold='0.6',
classifier_ids='dogsx2018x03x17_1725181949,Connectors_424118776')
print(json.dumps(classes, indent=2))https://stackoverflow.com/questions/50929595
复制相似问题