我正在構建將用於應用程序更新的WebAPI服務,我寫了一個HEAD和GET方法,它們都帶有一個Version對象,它表示客戶端升級到的版本。HttpClient頭請求參數始終爲空
我已經寫了一個客戶端使用,但必須通過的版本對象請求一些問題的應用程序,我已在爲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服務器不支持的媒體類型響應。我添加了httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
但沒有區別,有什麼想法? (注意:我收到上述響應,或者按照建議使用version.ToString()
)
檢查到達您的服務器的實際Url並查看版本查詢參數是否存在。 –
And ... Btw ... Json序列化對象不適合查詢字符串參數。他們往往有各種非法角色。怎麼樣version.ToString()呢? –