新手使用Google Cloud Shell调用Cloud Vision API遇400错误求助
解决Google Cloud Vision API调用的400 INVALID_ARGUMENT错误
1. 修正curl命令的参数错误
你的curl命令同时使用了--data-binary和-d参数,二者冲突且写法错误,导致-d被当成JSON payload的一部分传入,触发API解析失败。正确命令需移除-d,直接用--data-binary指定请求体文件:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: cogent-anvil-417312" \ -H "Content-Type: application/json; charset=utf-8" \ --data-binary @request.json \ "https://vision.googleapis.com/v1/images:annotate"
2. 修正request.json的内容错误
当前request.json中image.content字段填写的是文件路径,不符合API要求——该字段需要图片的base64编码字符串,而非路径。提供两种正确写法:
方式一:直接嵌入base64编码字符串
在Cloud Shell中执行以下命令,自动生成包含正确base64内容的request.json:
cat > request.json << EOF { "requests": [ { "image": { "content": "$(base64 IMG_2058_1024x768.jpeg -w 0)" }, "features": [ { "type": "OBJECT_LOCALIZATION", "maxResults": 1 } ] } ] } EOF
方式二:使用Google Cloud Storage地址(适合大图片)
若图片已上传至GCS,替换为gcsImageUri字段:
{ "requests": [ { "image": { "gcsImageUri": "gs://你的存储桶名称/IMG_2058_1024x768.jpeg" }, "features": [ { "type": "OBJECT_LOCALIZATION", "maxResults": 1 } ] } ] }
注意:需确保服务账号拥有该GCS对象的访问权限
另外注意:你request.json中写的文件名IMG_5028_1064x768_Base64.jpeg与实际生成的IMG_2058_1024x768_Base64.jpeg不匹配,需统一文件名避免路径错误。
内容的提问来源于stack exchange,提问作者Cenk
相关产品推荐
相关产品推荐

