'Malformed or invalid request' 与 clarifai API



以下对 clarifai API 的请求有什么问题-

import requests
image_url='https://samples.clarifai.com/food.jpg'
api='Key cb03ceba3c8842aeadd55dcb2f0be152'
headers = {
'Authorization': api,
'Content-Type': 'application/json',
}
data = '{"inputs": [{"data": {"image": {"url": image_url}}}]}'
url='https://api.clarifai.com/v2/models/bd367be194cf45149e75f01d59f77ba7/outputs'
response = requests.post(url=url, headers=headers, data=data)
print(response.status_code, response.json())

我一直遇到这个错误-

400 {'status': {'code': 11102, 'description': 'Invalid request', 'details': 'Malformed or invalid request'}}

看起来你需要使用:

'{"inputs": [{"data": {"image": {"url": "' + image_url + '"}}}]}'

由于单引号正在创建一个字符串,因此您不能直接添加变量,而是需要将其连接起来。 您实际上是在发送文本image_url,而不是该语句中变量image_url的实际值。

您还需要更正标头以获得有效的响应

header = {'Authorization': 'Key '+ api_key ,"Content-Type": "application/json"}

你必须将数据转换为JSON,json.dumps((会将数据转换为JSON。

data = {"inputs": [{"data": {"image": {"url": image_url}}}]}

json_data = json.dumps(data)

我遇到了同样的问题;我通过将保存图像 URL 的变量转换为字符串来解决它。在您的情况下,只需进行以下更改:

data = '{"inputs": [{"data": {"image": {"url": image_url.tostring}}}]}'

最新更新