让我纠结了一天多的问题,给大家看下,有相同情况的可以不用浪费时间了,本人当时找了好半天都没找到什么有用的信息,项目在本地没有问题,但部署在服务器后,获取不到https页面的信息,加入下面的代码就可以了,因为iis7.5的安全协议比较高的原因。
我的获取页面需要cookie,不需要的可以去掉;
GET的方法:
代码如下:
/// <summary>
/// 获取URL访问的HTML内容 获取https 页面的
/// </summary>
/// <param name="Url">URL地址</param>
/// <returns>HTML内容</returns>
public static string GetWebContent(string Url, CookieContainer cookieContainer)
{
string strResult = "";
try
{
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.CookieContainer = cookieContainer;
request.Timeout = 30000;
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("utf-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch
{
}
return strResult;
}
POST的方法:
代码如下:
/// <summary>
/// post提交数据到https
/// </summary>
/// <param name="posturl"></param>
/// <param name="postdata"></param>
/// <param name="header"></param>
/// <param name="cookieContainer"></param>
/// <returns></returns>
public static string SetPostHtml(string posturl, string postdata, HttpHeader header, CookieContainer cookieContainer)
{
string restr = "";
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
HttpWebRequest request = null;
HttpWebResponse response = null;
request = (HttpWebRequest)WebRequest.Create(posturl);
request.CookieContainer = cookieContainer;
request.Method = header.method;
request.Referer = header.Referer;
request.ContentType = header.contentType;
byte[] postdatabyte = Encoding.UTF8.GetBytes(postdata);
request.ContentLength = postdatabyte.Length;
request.AllowAutoRedirect = false;
request.KeepAlive = true;
//提交请求
Stream stream;
stream = request.GetRequestStream();
stream.Write(postdatabyte, 0, postdatabyte.Length);
stream.Close();
//接收响应
response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
restr = reader.ReadToEnd().ToString();
}
return restr;
}
中国足彩网信息请查看IT技术专栏