Я создаю службу 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()
, как было предложено)