You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							117 lines
						
					
					
						
							5.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							117 lines
						
					
					
						
							5.1 KiB
						
					
					
				
								using System;
							 | 
						|
								using System.Collections.Generic;
							 | 
						|
								using System.Collections.Specialized;
							 | 
						|
								using System.IO;
							 | 
						|
								using System.Linq;
							 | 
						|
								using System.Net;
							 | 
						|
								using System.Net.Security;
							 | 
						|
								using System.Security.Cryptography.X509Certificates;
							 | 
						|
								using System.Text;
							 | 
						|
								using System.Web;
							 | 
						|
								
							 | 
						|
								namespace QZWebApi.Bus
							 | 
						|
								{
							 | 
						|
								    public class HttpHelper
							 | 
						|
								    {
							 | 
						|
								        /// <summary>  
							 | 
						|
								            /// 创建GET方式的HTTP请求  
							 | 
						|
								            /// </summary>  
							 | 
						|
								            /// <param name="url">请求的URL</param>   
							 | 
						|
								            /// <param name="parameters">随同请求GET的参数名称及参数值字典</param>  
							 | 
						|
								            /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>  
							 | 
						|
								            /// <param name="timeout">请求的超时时间</param>  
							 | 
						|
								            /// <returns></returns>  
							 | 
						|
								        public static string CreateGetHttpRequest(string url, NameValueCollection parameters, string userAgent = "", int timeout = 90000)
							 | 
						|
								        {
							 | 
						|
								            if (string.IsNullOrEmpty(url))
							 | 
						|
								            {
							 | 
						|
								                throw new ArgumentNullException("url");
							 | 
						|
								            }
							 | 
						|
								            if (parameters != null && parameters.Count > 0)
							 | 
						|
								            {
							 | 
						|
								                if (url.Contains("?"))
							 | 
						|
								                {
							 | 
						|
								
							 | 
						|
								                    url = $"{url}&{NameValueCollectionToString(parameters)}";
							 | 
						|
								
							 | 
						|
								                }
							 | 
						|
								                else
							 | 
						|
								                {
							 | 
						|
								                    url = $"{url}?{NameValueCollectionToString(parameters)}";
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								            HttpWebRequest wreq = (HttpWebRequest)WebRequest.Create(url);
							 | 
						|
								            wreq.Method = "GET";
							 | 
						|
								            wreq.Timeout = timeout;
							 | 
						|
								            wreq.UserAgent = (string.IsNullOrEmpty(userAgent)) ? "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8" : userAgent;
							 | 
						|
								            HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse();
							 | 
						|
								            //采用流读取,并确定编码方式
							 | 
						|
								            var result = "";
							 | 
						|
								            using (HttpWebResponse httpWebResponse = wreq.GetResponse() as HttpWebResponse)
							 | 
						|
								            {
							 | 
						|
								                using (Stream stream2 = wreq.GetResponse().GetResponseStream())
							 | 
						|
								                {
							 | 
						|
								                    using (StreamReader streamReader = new StreamReader(stream2, Encoding.UTF8))
							 | 
						|
								                    {
							 | 
						|
								                        result = streamReader.ReadToEnd();
							 | 
						|
								
							 | 
						|
								                    }
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								            return result;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        public static string NameValueCollectionToString(NameValueCollection nvc)
							 | 
						|
								        {
							 | 
						|
								            StringBuilder sb = new StringBuilder();
							 | 
						|
								            foreach (string key in nvc.Keys)
							 | 
						|
								            {
							 | 
						|
								                sb.AppendFormat("{0}={1}&", key, nvc[key]);
							 | 
						|
								            }
							 | 
						|
								            return sb.ToString().TrimEnd('&');
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /// <summary> 
							 | 
						|
								        /// 调用api返回json  
							 | 
						|
								        /// </summary>  
							 | 
						|
								        /// <param name="url">api地址</param>  
							 | 
						|
								        /// <param name="jsonstr">接收参数</param>  
							 | 
						|
								        /// <param name="type">类型</param>  
							 | 
						|
								        /// <returns></returns>  
							 | 
						|
								        public static string HttpPost(string url, string jsonstr)//,string type
							 | 
						|
								        {
							 | 
						|
								            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + jsonstr); //--需要封装的参数
							 | 
						|
								            request.CookieContainer = new CookieContainer();
							 | 
						|
								            //以下是发送的http头
							 | 
						|
								            request.Referer = "";
							 | 
						|
								            //request.ContentType = "text/xml";
							 | 
						|
								            request.Headers["Accept-Language"] = "zh-CN,zh;q=0.";
							 | 
						|
								            request.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";
							 | 
						|
								            request.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1";
							 | 
						|
								            request.KeepAlive = true;
							 | 
						|
								            //上面的http头看情况而定,但是下面俩必须加 
							 | 
						|
								            request.ContentType = "application/x-www-form-urlencoded";
							 | 
						|
								            Encoding encoding = Encoding.UTF8;//根据网站的编码自定义
							 | 
						|
								            request.Method = "get";  //--需要将get改为post才可行
							 | 
						|
								            string postDataStr;
							 | 
						|
								            //Stream requestStream = request.GetRequestStream();
							 | 
						|
								            if (jsonstr != "")
							 | 
						|
								            {
							 | 
						|
								                postDataStr = jsonstr;//--需要封装,形式如“arg=arg1&arg2=arg2”
							 | 
						|
								                byte[] postData = encoding.GetBytes(postDataStr);//postDataStr即为发送的数据,
							 | 
						|
								                                                                 //request.ContentLength = postData.Length;  //写入后不允许设置此属性
							 | 
						|
								                                                                 //requestStream.Write(postData, 0, postData.Length);
							 | 
						|
								            }
							 | 
						|
								            HttpWebResponse response = (HttpWebResponse)request.GetResponse();  //远程服务器返回错误: (405) 不允许的方法/远程服务器返回错误: (500) 内部服务器错误。
							 | 
						|
								            Stream responseStream = response.GetResponseStream();
							 | 
						|
								
							 | 
						|
								            StreamReader streamReader = new StreamReader(responseStream, encoding);
							 | 
						|
								            string retString = streamReader.ReadToEnd();
							 | 
						|
								
							 | 
						|
								            streamReader.Close();
							 | 
						|
								            responseStream.Close();
							 | 
						|
								            return retString;
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 |