我正在尝试使用xamarin(目标:.net标准)环境中的System.Net.Http.HttpClient
创建Http请求。请求将是定期的,不会包含太多数据。默认情况下,所有请求都包含User-Agent
和Content-Type
标头,它们比请求的主体大4倍。我不需要Content-Type
,因为服务器只接受一种内容类型,并且当标头不存在时它假定正确的内容类型。
我已经尝试删除UserAgent标头,但是仍然设置了默认标头。
HttpClient.DefaultRequestHeaders.UserAgent.Clear();
我也尝试将Content-Type设置为null,空字符串等:
request.Content = new ByteArrayContent(byteArray);
request.Content.Headers.ContentType = null; //Doesn't work
request.Content.Headers.ContentType = new MediaTypeHeaderValue(null); //Throws exception
request.Content.Headers.ContentType = new MediaTypeHeaderValue(""); //Throws exception
如何创建等待的http请求并完全控制标题?
经过一天的奋斗,我发现,Xamarin可以使用两种不同的HttpMessageHandler
实现,这是实际发送请求的底层机制:
User-Agent
和Content-Type
没有被发送。.NET Core中的HttpClient
表现得像托管一样,所以我认为这是预期的行为。关于github的问题:https://github.com/xamarin/xamarin-android/issues/2747
资料来源: