当前位置:编程学习 > C#/ASP.NET >>

HttpWebRequest.Headers.Add出错 指定的值含有无效的控制字符

System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(URL);
request.ContentType = "application/x-www-form-urlencoded";
CookieContainer cookie = new CookieContainer();
request.CookieContainer = cookie;
request.Method = "POST";
            request.ContentType = "text/html;charset=UTF-8;";
            string requestContent = @"<request><accname><![CDATA[" + fileName + "]]></accname><accessoryid>CB6E04AE-F3FD-4A52-804B-18D3ACA3BC55</accessoryid><filelength>0</filelength><downloadlength></downloadlength><updownmark>0</updownmark></request>";
//执行以下的时候可能会报错
            request.Headers.Add( string.Format("key:{0}", requestContent));
            request.AddRange(0);

在执行request.Headers.Add时,如果filename包含 "合""布" 就会报错 "指定的值含有无效的控制字符。参数名: value" , 而其他中文有时候也会出现这样的报错,具体就没在试了
"服" 则会报错"指定的值含有无效的CRLF字符"
用英文或者数字的filename就没事 
这个问题好郁闷,都不知道为啥会出现阿 
现在都不确定其他中文是否也会出现这样的问题

求大神解决~~


PS:request.Headers.Add( string.Format("key:{0}", requestContent));这里面的requestContent不允许进行System.Web.HttpUtility.UrlEncode(requestContent)这样的编码操作,因为对方接口没有规定这个编码操作,一旦进行编码的话,对方收到的就是乱码了 Hearders --------------------编程问答-------------------- headers里面是报文头文件,一般你不需要管的,只有在特殊情况下你需要处理,头文件里面是key:value,看你的requestContent应该是请求内容吧,那个是不能放到里面的 --------------------编程问答--------------------
引用 1 楼 flyer_ren 的回复:
headers里面是报文头文件,一般你不需要管的,只有在特殊情况下你需要处理,头文件里面是key:value,看你的requestContent应该是请求内容吧,那个是不能放到里面的


这个在接口约定中,是要求吧请求内容方在key中的
"参数直接在http 协议中当做headers的一个参数传递,参数为Key=requestContent;"
这是接口的描述 --------------------编程问答--------------------
引用 2 楼 ap030329 的回复:
这个在接口约定中,是要求吧请求内容方在key中的
"参数直接在http 协议中当做headers的一个参数传递,参数为Key=requestContent;"
这是接口的描述

HttpWebRequest 的Headers里面不允许有汉字吧,对方那如果有编码操作,你编码后发过去他们再解码,如果没有,你是用TcpClient方式吧,里面可以放汉字的直接发过去试试对方能不能接收
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,