为什么API无法识别HttpRequestMessage标头值?

时间:2017-05-15 08:31:32

标签: c# curl http-headers

我有这个CURL命令,我想转换为C#:

curl -H "Api-Key: abc123" -H "Accept: application/vnd.com.some+json; version=9" https://api.someapi.io/somemethod?someParam=someparam

我在标题中设置version = 9时遇到问题。我提出这样的要求:

var request = new HttpRequestMessage()
            {
                RequestUri = new Uri(requestURL),
                Method = HttpMethod.Get
            };

            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.com.some+json"));
            request.Headers.Add("Api-Key", apiKey);
            request.Headers.Add("version", "9");

            var httpHandler = new HttpClientHandler();

            var httpClient = new HttpClient(httpHandler);

            var response = await httpClient.SendAsync(request);

            var json = await response.Content.ReadAsStringAsync();

当我通过curl调用此请求时,它可以工作,并识别标头中定义的版本值。

从此c#代码调用API方法也有效,但API无法识别标头中定义的版本值(版本定义API版本)。请注意,我的其他标头值(apikey,mediatype)由API正确处理。

我的代码中有什么错过?

非常感谢!

1 个答案:

答案 0 :(得分:0)

所以,最后我找到了解决方案:

request.Headers.Add("Accept", "application/vnd.com.some+json;version=9");
request.Headers.Add("Api-Key", apiKey);

感谢大家的帮助!