1 如果参数中含有特殊字符&,则强制URL编码<br> 2 3 http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割。如"?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值, 在计算机中使用用ASCII码表示 4 5 如果我的参数值中就包含=或&这种特殊字符的时候该怎么办。 6 比如说“name1=value1”,其中value1的值是“va&lu=e1”字符串,那么实际在传输过程中就会变成这样“name1=va&lu=e1”。我们的本意是就只有一个键值对,但是服务端会解析成两个键值对,这样就产生了歧义。 7 8 URL编码只是简单的在特殊字符的各个字节前加上%,例如,我们对上述会产生奇异的字符进行URL编码后结果:“name1=va%26lu%3D”,这样服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。
第一种方法: 第一步:获取在Web.config中配置要请求的地址 string url = System.Web.Configuration.WebConfigurationManager.AppSettings["url"]; 第二步:把字符串编码(编码详解) string allStr = System.Web.HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8) ; 第三步:把参数转成byte byte[] bufferB = Encoding.UTF8.GetBytes(allStr); 第四步:构建HttpWebRequest,并发送 System.Net.ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url); WebReq.Method = "POST"; WebReq.ContentType = "application/x-www-form-urlencoded"; WebReq.ContentLength = allStr.Length; Stream PostData = WebReq.GetRequestStream(); PostData.Write(bufferB, 0, bufferB.Length); PostData.Close(); 第五步:接收返回结果(解析返回的JSON) HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse(); StreamReader sr = new StreamReader(WebResp.GetResponseStream(), System.Text.Encoding.UTF8); string backstr = sr.ReadToEnd(); backstr = HttpUtility.UrlDecode(backstr); Console.WriteLine(WebResp.StatusCode); Console.WriteLine(WebResp.Server); Stream Answer = WebResp.GetResponseStream(); StreamReader _Answer = new StreamReader(Answer); Console.WriteLine(_Answer.ReadToEnd()); --------------------- 作者:容妞 来源:CSDN 原文:https://blog.csdn.net/lijingrong_ljr/article/details/53214729 版权声明:本文为博主原创文章,转载请附上博文链接!
string url = "http://16.8.3.91:8089/api/query/Bicycle?deviceno=1&operator=2&sign=9fe789d7a5629a59ed56d7a256dc5a1a&cardno=0310";//http需要传递的参数与地址 WebRequest wRequest = WebRequest.Create(url); wRequest.Method = "GET"; wRequest.ContentType = "text/html;charset=UTF-8"; WebResponse wResponse = wRequest.GetResponse(); Stream stream = wResponse.GetResponseStream(); StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8); string str = reader.ReadToEnd(); //url返回的值 --------------------- 作者:叫我梧桐树 来源:CSDN 原文:https://blog.csdn.net/u012732371/article/details/58587092 版权声明:本文为博主原创文章,转载请附上博文链接!
原文地址:https://www.cnblogs.com/ZkbFighting/p/11022959.html
时间: 2024-10-15 16:16:34