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><updown>0</updown></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

解决方案 »

  1.   

    headers里面是报文头文件,一般你不需要管的,只有在特殊情况下你需要处理,头文件里面是key:value,看你的requestContent应该是请求内容吧,那个是不能放到里面的
      

  2.   


    这个在接口约定中,是要求吧请求内容方在key中的
    "参数直接在http 协议中当做headers的一个参数传递,参数为Key=requestContent;"
    这是接口的描述
      

  3.   

    HttpWebRequest 的Headers里面不允许有汉字吧,对方那如果有编码操作,你编码后发过去他们再解码,如果没有,你是用TcpClient方式吧,里面可以放汉字的直接发过去试试对方能不能接收