【发布时间】:2017-05-15 08:31:31
【问题描述】:
我想将这个 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 正确处理。
我的代码中遗漏了什么?
非常感谢!
【问题讨论】:
-
在您的 curl 命令中,您的
version位于Accept标头中,但在您的 c# 代码中,您将其添加为单独的标头。故意的? -
同理,不应该是
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.com.some+json; version=9"));而不是request.Headers.Add("version", "9"); -
它不起作用,我试过了:mscorlib.dll 中发生了“System.FormatException”类型的异常,但未在用户代码中处理。格式无效application/vnd.com.some+json;版本=9
标签: c# curl http-headers