python - cUrl 到 python 转换 Clarifai
问题描述
我试图访问 clarifai api,cURL 中的以下代码运行良好,
curl -X POST \
-H "Authorization: Key yyyyyyy" \
-H "Content-Type: application/json" \
-d '
{
"inputs": [
{
"data": {
"image": {
"base64": "'"$(base64 /Users/user/Documents/clariFai/test1.jpg)"'"
}
}
}
]
}'\
https://api.clarifai.com/v2/models/xxxxxxxxxx/outputs
我想与 python 一起使用的相同,
我试过的是
import requests
headers = {
'Authorization': 'Key yyyyyyy',
'Content-Type': 'application/json',
}
data = ' { "inputs": [ { "data": { "image": { "base64": "$(base64 /Users/user/Documents/clariFai/test1.jpg)" } } } ] }'
response = requests.post('https://api.clarifai.com/v2/models/xxxxxxxxxx/outputs', headers=headers, data=data)
print(response.content)
但我得到的回应是
b'{"status":{"code":11102,"description":"Invalid request","details":"Malformed or invalid request"}}'
请帮我用正确的语法写同样的东西。
解决方案
您可以尝试使用此代码对图像进行 base64 编码并通过以下方式发送requests
:
import base64
import requests
headers = {
"Authorization": "Key yyyyyyy",
"Content-Type": "application/json", # <-- maybe not necessary
}
encoded_file = base64.b64encode(open("/Users/user/Documents/clariFai/test1.jpg", "rb").read())
encoded_file = encoded_file.decode("utf-8") # <-- convert it to string
data = {
"inputs": [
{
"data": {
"image": {
"base64": encoded_file # <-- put base64 encoded file here
}
}
}
]
}
response = requests.post(
"https://api.clarifai.com/v2/models/xxxxxxxxxx/outputs",
headers=headers,
json=data, # <-- use json= parameter
)
print(response.content)
编辑:转换encoded_file
为字符串。
推荐阅读
- python - 在张量流中得到一个 ValueError 说我的形状不兼容
- symfony - 选项卡式格式的 Symfony 4.4 配置 yaml
- gradle - 如何将嵌套集合添加到扩展
- python - 使用 qgis 和 shaply 错误:GEOSGeom_createLinearRing_r 返回一个 NULL 指针
- java - 如何在texview中显示来自firebase的一组数字的总和
- javascript - 使用 Laravel 和 javascript 时时区差异导致剩余时间不正确
- c# - 如何在 C# 中从 PowerShell 脚本运行 Azure 虚拟机
- html - 使用 flex 或 grid 在右侧浮动广告的卡片列表
- python - Typeerror 'dict_keys' 对象不可下标
- javascript - 如何向 php 文件发送 post 请求并在 firefox extnesion 中使用 webRequest 响应?