gpt4 book ai didi

C# - 设置 HttpClient header 以将数据 POST 到 Azure REST API

转载 作者:行者123 更新时间:2023-12-03 05:01:09 26 4
gpt4 key购买 nike

我正在尝试将一些数据发布到 Azure REST API。我在 Postman 中定义了一个有效的请求。现在,在我的 C# 代码中,我想使用 HttpClient 而不是帮助程序库。为了尝试做到这一点,我目前有:

try
{
var json = @"{
'@search.action':'upload',
'id':'abcdef',
'text':'this is a long blob of text'
}";

using (var client = new HttpClient())
{
var requestUri = $"https://my-search-service.search.windows.net/indexes/my-index/docs/index?api-version=2019-05-06";

// Here is my problem
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("api-key", myKey);
client.DefaultRequestHeaders.Add("Content-Type", "application/json");

using (var content = new StringContent(json, Encoding.UTF8, "application/json")
{
using (var request = Task.Run(async() => await client.PostAsync(requestUri, content)))
{
request.Wait();
using (var response = request.Result)
{
}
}
}
}
}
catch (Exception exc)
{
Console.WriteLine(exc.Message);
}

当我运行这个时,会抛出一个 InvalidOperationException ,内容如下:

Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.

我不明白我做错了什么。如何使用 C# 中的 HttpClient 将数据发布到 Azure REST API?

谢谢!

最佳答案

内容类型是内容的 header ,而不是请求的 header ,这就是失败的原因。您还可以在创建请求的内容本身时设置内容类型(请注意,代码片段在两个位置添加了“application/json” - 用于 Accept 和 Content-Type header )

client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT

关于C# - 设置 HttpClient header 以将数据 POST 到 Azure REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57076515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com