C#如何对自定义HTTPHeaders进行编码有没有类似HttpUtility的类来对自定义Header的内容进行编码?理想情况下,我希望保持内容的可读性。您可以在.NETFramework4.0及更高版本中使用HttpEncoder.HeaderNameValueEncode方法。对于以前版本的.NETFramework,您可以使用HttpEncoder.HeaderNameValueEncode参考页上记录的逻辑来滚动您自己的编码器:更新:正如OliverBock指出的那样,HttpEncoder.HeaderNameValueEncode方法是受保护的并且是内部的。去开源的Mono项目,找到了monovoidHeaderNameValueEncode(stringheaderName,stringheaderValue,outstringencodedHeaderName,outstringencodedHeaderValue){if(String.IsNullOrEmpty(headerName))encodedHeaderName=headerName;的实现;elseencodedHeaderName=EncodeHeaderName);如果(String.IsNullOrEmpty(headerValue))encodedHeaderValue=headerValue;elseencodedHeaderValue=EncodeHeaderString(headerValue);}staticvoidStringBuilderAppend(strings,refStringBuildersb){if(sb==null)sb=newStringBuilder(s);elsesb.Append(s);}静态字符串EncodeHeaderString(字符串输入){StringBuildersb=null;对于(inti=0;我仅供参考[此处](https://github.com/mono/mono/blob/master/mcs/class/System.Web/System.Web.Util/HttpEncoder.cs)对我有帮助Uri.EscapeDataString(headervalue)这与HeaderNameValueEncode()的作用相同,但还会对%字符进行编码,以便稍后可以可靠地解码标头。静态字符串EncodeHeaderValue(字符串值){returnRegex.Replace(value,@"[u0000-u0008u000a-u001f%u007f]",(m)=>"%"+((int)m.Value[0]).ToString("x2"));}staticstringDecodeHeaderValue(stringencoded){returnRegex.Replace(encoded,@"%([0-9a-f]{2})",(m)=>newString((char)Convert.ToInt32(m.Groups[1].Value,16),1),RegexOptions.IgnoreCase);}Mayeb这一个?UrlEncodefunction对不起,它超出了我的头脑,但对于您的请求对象,应该有一个您可以添加的标头对象。即request.headers.add("blah");仅此而已,但它应该为您指明正确的方向。以上就是C#学习教程:HowtoencodecustomHTTPheadersinC#分享的全部内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注---本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:
