1.進行HttpClient請求時,對接一些第三方廠商的接口時,需要設置
Content-Type:application/json;charset=utf-8
但是在進行http接口訪問時,會自動在Content-Type結束位置與charset開始位置加空格,導致無法使用HttpClient請求接口數據。
Content-Type:application/json; charset=utf-8
需要使用http方式重構
content.Headers.ContentType = new MediaTypeHeaderValueClass("application/json");
需要把這個MediaTypeHeaderValueClass繼承MediaTypeHeaderValue方法重寫tostring里面參數方法即可。
// <summary>
///
/// </summary>
public class MediaTypeHeaderValueClass : MediaTypeHeaderValue
{
/// <summary>
///
/// </summary>
/// <param name="mediaType">
</param>
public MediaTypeHeaderValueClass(string mediaType) : base(mediaType)
{
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string ToString()
{
if (string.IsNullOrWhiteSpace(base.CharSet))
{
return base.MediaType + ";charset=utf-8";
}
return base.MediaType + ";charset=" + base.CharSet;
}
}
調用方法
HttpClient client = new HttpClient(new HttpClientHandler
{
MaxConnectionsPerServer = 100000,
UseDefaultCredentials = false,
AllowAutoRedirect = false,
UseCookies = false,
Proxy = null,
UseProxy = false,
AutomaticDecompression = DecompressionMethods.GZip
});
var content = new StringContent(strParam);
content.Headers.ContentType = new MediaTypeHeaderValueClass("application/json");
content.Headers.ContentType.CharSet = "utf-8";
var msg = new HttpRequestMessage();
msg.Content = content;
msg.Method = HttpMethod.Post;
msg.RequestUri = new Uri(Url);
var rest = await client.SendAsync(msg);