被锁定在 .NET 2.0 上,我无法使用 GOOGLE VISION C# API,它仅在 .NET 4.0 之后可用。
所以我想在这样的网络请求中使用这个 API:
string webAddr = "https://vision.googleapis.com/v1/images:annotate?key=XXXXXXXXXXX";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.ContentType = "application/json; charset=utf-8";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = " { \"requests\": [ { \"image\": { \"content\": " + this.b64 + " }, \"features\": [ {\"type\": \"TEXT_DETECTION\" }] }] }";
streamWriter.Write(json);
streamWriter.Flush();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var responseText = streamReader.ReadToEnd();
Console.WriteLine(responseText);
}
Run Code Online (Sandbox Code Playgroud)
问题是我从谷歌永久获得了 400 的回报,经过大量搜索后我找不到解决方案。
你能给我一个方法来解决这个问题吗?非常感谢。
(抱歉英语不好...)
您可以使用来自此 API 的请求和响应HTTP POST requests或Cloud Vision API Client Libraries与之交互。
使用 HTTP 协议交换方法可以让您:
- 不依赖于库版本和框架版本
- 使用任何方式创建 HTTP 请求(HTTPClient 或 HTTPWebResponse 或其他)
- 您收到与使用客户端库时相同的结果
- 使用 Tasks 允许您在同步上下文中执行异步请求
可以通过以下方式执行用于文本检测的简单 Cloud Vision API 使用:
string base64string = "";
Bitmap bmpArea = null;
//preparing our image
using (MemoryStream m = new MemoryStream())
{
bmpArea.Save(m, ImageFormat.Jpeg);
byte[] imageBytes = m.ToArray();
base64string = Convert.ToBase64String(imageBytes);
}
//call request asynchronically
Task.Run(async () => await Google_Vision_API_Request(base64string));
Run Code Online (Sandbox Code Playgroud)
带有 JSON 内容的请求示例:
public async Task Google_Vision_API_Request(string base64string)
{
HttpResponseMessage response;
using (var client = new HttpClient())
{
string myJson = $@"{{
""requests"":[
{{
""image"":{{
""content"": ""{base64string}""
}},
""features"":[
{{
""type"": ""TEXT_DETECTION""
}}
]
}}
]
}}";
string requestUri = "https://vision.googleapis.com/v1/images:annotate?key=";
requestUri += google_api_key_var;
response = await client.PostAsync(
requestUri,
new StringContent(myJson, Encoding.UTF8, "application/json"));
responseStr = await response.Content.ReadAsStringAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |