HttpRequestHeaders.Add将标题拆分为空白

时间:2019-02-20 11:02:51

标签: c# xamarin.forms http-headers httprequest string-formatting

我正在尝试向已有的请求添加一个新的标头(该请求之前曾起作用),在该请求中,我想放置某种格式如下的User-Agent字符串:

  

AppName / AppVersion DeviceOS DeviceOSVersion

它的代码是这样写的(请求是HttpRequestMessage):

request.Headers.Add(UserAgentKey, $"{AppName}/{DependencyService.Get<IVersionProperties>().GetAppVersion()} ({Device.RuntimePlatform} {DependencyService.Get<IVersionProperties>().GetOSVersion()})");

但是很奇怪,它将字符串在withspace上分成两部分(在小数点和左括号之间),导致User-Agent标头有2个值,而不是1个统一整数。

所以我很好奇我在这里做错了什么,我认为这与空白有关,我可能需要以某种方式对其进行转义,但我不确定如何做。我希望有人可以帮助我解决这个问题。

谢谢。

2 个答案:

答案 0 :(得分:0)

也许不是一个完整的解决方案,但至少是一种解决方法,为什么不首先编写字符串:var userAgent = $"{AppName}/{DependencyService.Get<IVersionProperties>().GetAppVersion()} ({Device.RuntimePlatform} {DependencyService.Get<IVersionProperties>().GetOSVersion()});"

然后取出换行符:userAgent = userAgent.Replace(Environment.NewLine, " ");

对于原因,我想说这些值之一包含换行符。虽然我真的不知道为什么或哪个。您是否分别检查了每个值?

答案 1 :(得分:0)

显然,这与我使用的标头有关。

我使用了标头“ User-Agent”,该标头需要某种格式并附加了其他有趣的功能,例如,当我将其更改为“ User-Agentt”时,它就可以正常工作,因为我没有明确表示需要调用标题,我将只更改标题的名称。