JSON 尝试使用 Face 时出现解析错误 API
JSON parsing error when trying to use Face API
我正在尝试通过 URL 地址将来自 Imgur 的照片发送到 Microsoft Face API 并从 Json 响应中获取人脸 ID 但是当我尝试 运行 代码,我总是得到 JSON 解析错误。我不知道我做错了什么。
我试图通过 Postman 发出此请求,那里一切正常,但在 C# 中它就是行不通。
你能帮帮我吗?
static void TryFunction()
{
string host = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true";
string subscriptionKey = "...";
body = new System.Object[] { new { url = @"https://i.imgur.com/... .png" } };
var requestBody = JsonConvert.SerializeObject(body);
using (var client = new HttpClient())
using (var request = new HttpRequestMessage())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
request.Method = HttpMethod.Post;
request.RequestUri = new Uri(host);
request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
var response = client.SendAsync(request).Result;
var jsonResponse = response.Content.ReadAsStringAsync().Result;
dynamic json = JsonConvert.DeserializeObject(jsonResponse);
Console.WriteLine(jsonResponse);
}
}
{"error": {"code":"BadArgument", "message":"JSON parsing error."}}
C# 请求正文如下所示:
[{"url":"https://i.imgur.com/... .png"}]
而 Postman 请求正文如下所示:
{ "url": "https://i.imgur.com/... .png" }
根据您的评论,您期望的是单个对象,但却生成了一个数组。这取决于以下代码行:
body = new System.Object[] { new { url = @"https://i.imgur.com/... .png" } };
这将创建一个包含单个项目的数组。你真正想要的只是一个单品:
body = new { url = @"https://i.imgur.com/... .png" };
注意JSON中的[ ]
是数组,JSON中的{ }
是对象
我正在尝试通过 URL 地址将来自 Imgur 的照片发送到 Microsoft Face API 并从 Json 响应中获取人脸 ID 但是当我尝试 运行 代码,我总是得到 JSON 解析错误。我不知道我做错了什么。
我试图通过 Postman 发出此请求,那里一切正常,但在 C# 中它就是行不通。
你能帮帮我吗?
static void TryFunction()
{
string host = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true";
string subscriptionKey = "...";
body = new System.Object[] { new { url = @"https://i.imgur.com/... .png" } };
var requestBody = JsonConvert.SerializeObject(body);
using (var client = new HttpClient())
using (var request = new HttpRequestMessage())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
request.Method = HttpMethod.Post;
request.RequestUri = new Uri(host);
request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
var response = client.SendAsync(request).Result;
var jsonResponse = response.Content.ReadAsStringAsync().Result;
dynamic json = JsonConvert.DeserializeObject(jsonResponse);
Console.WriteLine(jsonResponse);
}
}
{"error": {"code":"BadArgument", "message":"JSON parsing error."}}
C# 请求正文如下所示:
[{"url":"https://i.imgur.com/... .png"}]
而 Postman 请求正文如下所示:
{ "url": "https://i.imgur.com/... .png" }
根据您的评论,您期望的是单个对象,但却生成了一个数组。这取决于以下代码行:
body = new System.Object[] { new { url = @"https://i.imgur.com/... .png" } };
这将创建一个包含单个项目的数组。你真正想要的只是一个单品:
body = new { url = @"https://i.imgur.com/... .png" };
注意JSON中的[ ]
是数组,JSON中的{ }
是对象