讓我糾結了一天多的問題,給大家看下,有相同情況的可以不用浪費時間了,本人當時找了好半天都沒找到什么有用的信息,項目在本地沒有問題,但部署在服務器后,獲取不到https頁面的信息,加入下面的代碼就可以了,因為iis7.5的安全協議比較高的原因。
我的獲取頁面需要cookie,不需要的可以去掉;
GET的方法:
1 /// <summary> 2 /// 獲取URL訪問的HTML內容 獲取https 頁面的 3 /// </summary> 4 /// <param name="Url">URL地址</param> 5 /// <returns>HTML內容</returns> 6 public static string GetWebContent(string Url, CookieContainer cookieContainer) 7 { 8 string strResult = ""; 9 try10 {11 ServicePointManager.Expect100Continue = true;12 ServicePointManager.SecurityPRotocol = SecurityProtocolType.Ssl3;13 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);14 request.CookieContainer = cookieContainer;15 request.Timeout = 30000;16 request.Headers.Set("Pragma", "no-cache");17 18 HttpWebResponse response = (HttpWebResponse)request.GetResponse();19 Stream streamReceive = response.GetResponseStream();20 21 Encoding encoding = Encoding.GetEncoding("utf-8");22 StreamReader streamReader = new StreamReader(streamReceive, encoding);23 strResult = streamReader.ReadToEnd();24 }25 catch26 {27 28 }29 return strResult;30 }View Code
POST的方法:
1 /// <summary> 2 /// post提交數據到https 3 /// </summary> 4 /// <param name="posturl"></param> 5 /// <param name="postdata"></param> 6 /// <param name="header"></param> 7 /// <param name="cookieContainer"></param> 8 /// <returns></returns> 9 public static string SetPostHtml(string posturl, string postdata, HttpHeader header, CookieContainer cookieContainer)10 {11 string restr = "";12 ServicePointManager.Expect100Continue = true;13 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;14 HttpWebRequest request = null;15 HttpWebResponse response = null;16 request = (HttpWebRequest)WebRequest.Create(posturl);17 request.CookieContainer = cookieContainer;18 request.Method = header.method;19 request.Referer = header.Referer;20 request.ContentType = header.contentType;21 byte[] postdatabyte = Encoding.UTF8.GetBytes(postdata);22 request.ContentLength = postdatabyte.Length;23 request.AllowAutoRedirect = false;24 request.KeepAlive = true;25 //提交請求26 Stream stream;27 stream = request.GetRequestStream();28 stream.Write(postdatabyte, 0, postdatabyte.Length);29 stream.Close();30 //接收響應31 response = (HttpWebResponse)request.GetResponse();32 using (StreamReader reader = new StreamReader(response.GetResponseStream()))33 {34 restr = reader.ReadToEnd().ToString();35 }36 return restr;37 }View Code
希望對大家有幫助;
新聞熱點
疑難解答