UWP 和 headers

UWP and headers

我正在构建向远程服务器发送 HTTP(s) 请求的 UWP 应用程序,但我在添加 HTTP headers "Content-Type" 时遇到问题。我尝试使用方法 HttpRequestMessage.Headers.Add,但异常结束。然后HttpClient.DefaultRequestHeaders.TryAddWithoutValidation,什么都不做。请问有什么idea/hint怎么办?

如果我理解正确,

httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("<type>"));

应该能帮到你。

内容类型 header 是在您设置请求内容时添加的。您不能直接更改 header。

您应该查看 Windows.Web.Http 命名空间的 HttpXXXContent 类。

例如,如果您将内容作为字符串发送,则可以使用 HttpStringContent 作为:

var content = new HttpStringContent("my content string", Windows.Storage.Streams.UnicodeEncoding.Utf8, "text/xml");
var response = await m_client.PostAsync(m_serverUri, content;

您也可以使用 HttpFormUrlEncodedContent, HttpBufferContent...

我正在使用此代码:

using (var hc = new HttpClient()) {
    var content = new StringContent(..., Encoding.UTF8, "application/json");
    using (var response = await hc.PostAsync(..., content)) {
        ...
    }
}

或者这个:

using (var hc = new HttpClient()) {
    var content = new MultipartFormDataContent();
    content.Add(new FileContent(..., "text/xml", ...));
    using (var response = await hc.PostAsync(..., content)) {
        ...
    }
}