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应该是请求内容吧,那个是不能放到里面的 --------------------编程问答--------------------
这个在接口约定中,是要求吧请求内容方在key中的
"参数直接在http 协议中当做headers的一个参数传递,参数为Key=requestContent;"
这是接口的描述 --------------------编程问答--------------------
HttpWebRequest 的Headers里面不允许有汉字吧,对方那如果有编码操作,你编码后发过去他们再解码,如果没有,你是用TcpClient方式吧,里面可以放汉字的直接发过去试试对方能不能接收
补充:.NET技术 , C#