我正在构建一个用于应用程序更新的 WebAPI 服务,我编写了一个 HEAD 和 GET 方法,它们都采用一个版本对象,该对象表示客户端升级到的版本。
我已经编写了一个客户端供应用程序使用,但是在请求中传递版本对象时遇到了一些问题,对于 HEAD 请求,我有以下内容
var httpClient = this.CreateHttpClient(this.ServiceBaseAddress, handler);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
JsonSerializerSettings settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
var serializedVersion = JsonConvert.SerializeObject(version, settings);
var requestUri = string.Format(
"{0}{1}/?version={2}",
this.ServiceBaseAddress,
this.AddressSuffix,
serializedVersion);
var request = new HttpRequestMessage(HttpMethod.Head, requestUri);
if (from.HasValue)
{
request.Headers.Range = new RangeHeaderValue(from, to);
}
var response = await httpClient.SendAsync(request);
现在当我调试时。已到达服务方法断点但version
参数始终null
为,服务方法签名如下
public async Task<HttpResponseMessage> Head(Version version)
{
...
}
谁能解释我做错了什么?
编辑:做了更多分析,我从服务器收到 415 Unsupported Media Type 响应。我已经添加httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
但没有区别,有什么想法吗?(注意:我收到上述回复或version.ToString()
按照建议使用)