【发布时间】:2018-08-01 20:48:41
【问题描述】:
我正在尝试构建一个 C# 库,该库将充当一组 Google API 的包装器。使用 Google Vision API 时,我发现该 API 针对某些查询返回一个空响应集。例如,当我尝试在 car.png 上运行 FACE_ANNOTATION 时,我得到的响应是:
{
"responses": [
{}
]
}
我已经消除了所有基本问题,例如将图像存储在 Google Cloud 存储桶中、图像的公共访问权限、有效的 API 密钥、从 Google API 仪表板启用 API。
下面是我提出请求的一段代码:
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// The API address to which we will make the HTTP POST query
String request_query = "v1/images:annotate?" + $"key={APIKey}";
HttpResponseMessage response = await httpClient.PostAsJsonAsync(request_query, imageRequests);
Stream stream = await response.Content.ReadAsStreamAsync();
StreamReader streamReader = new StreamReader(stream);
String response_str = streamReader.ReadToEnd();
Console.WriteLine(response_str);
if (response.IsSuccessStatusCode) {
try {
imageResponseList = JsonConvert.DeserializeObject<AnnotateImageResponseList>(response_str);
} catch (JsonSerializationException e) {
Debug.WriteLine(e.StackTrace);
}
}
这是发送到 API 的请求正文(在我上面的代码中调用的 imageRequests):
{
"requests": [
{
"image":
{
"content":"",
"source":
{
"imageUri":"gs://<google_cloud_bucket>/car.png"
}
},
"features":[
{
"type":0,
"maxResults":100,
"model":"builtin/stable"
}
],
"imageContext":null
}
]
}
现在,我知道已经有一个可以直接使用的 C# 客户端,但是我正在做的项目需要我通过 HTTP 请求访问 REST API。
任何帮助将不胜感激。
【问题讨论】:
标签: c# google-api google-cloud-vision