110,533
社区成员
发帖
与我相关
我的任务
分享
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
WebBw.Url = new Uri("http://www.qidian.com");
}
HomeController homeCtl = new HomeController();
Thread oThread;
// 获得浏览器里面的cookies
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags, object lpReserved);
//取出Cookie,当登录后才能取
/// <summary>
/// 获得浏览器里面的cookies
/// </summary>
/// <param name="url">浏览器的网址</param>
/// <returns>返回string类型的(cookies)</returns>
private static string GetCookieString(string url)
{
// Determine the size of the cookie
int datasize = 256;
StringBuilder cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
{
if (datasize < 0)
return null;
// Allocate stringbuilder large enough to hold the cookie
cookieData = new StringBuilder(datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
return null;
}
return cookieData.ToString();
}
//点击开始发送
private void button1_Click(object sender, EventArgs e)
{
string Strcook;
Strcook= GetCookieString("http://www.qidian.com/Default.aspx");
// Strcook = GetCookieString("http://www.qidian.com/Book/3022278.aspx");
string[] arrCookie = Strcook.Split(';');
CookieContainer cookie_container = new CookieContainer(); //加载Cookie
//cookie_container.SetCookies(new Uri(url), cookie);
Strcook += ";pTime=Sat%20Sep%2005%202015%2019%3A01%3A00%20GMT+0800%20%28%u4E2D%u56FD%u6807%u51C6%u65F6%u95F4%29;__utmt=1";
string cookieStr = Strcook;
string StrUTFcx="";
//实现 string(cookies)转化为CookieContainer类型
string[] cookstr = cookieStr.Split( ';');
foreach (string str in cookstr)
{
string[] cookieNameValue = str.Split( '=');
StrUTFcx=cookieNameValue[1].Trim().ToString();
StrUTFcx = StrUTFcx.Replace(",", "%2C");
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), StrUTFcx);
ck.Domain = "www.qidian.com";//必须写对 (读取的网页页面)
cookie_container.Add(ck);
}
string plAddress = "http://c.pingba.qidian.com/ForumAjax.aspx?opName=AddForumReview";//发送的地址
//提交的数据
string mywords = "bookId=3022278&title=%u597D%u4E66%u652F%u6301%u4E0B&content=%u597D%u4E66%u652F%u6301%u4E0B%u597D%u4E66%u652F%u6301%u4E0B%u597D%u4E66%u652F%u6301%u4E0B%u597D%u4E66%u652F%u6301%u4E0B%u597D%u4E66%u652F%u6301%u4E0B%u597D%u4E66%u652F%u6301%u4E0B%u597D%u4E66%u652F%u6301%u4E0B%u597D%u4E66%u652F%u6301%u4E0B&postType=%5B%u8BC4%u8BBA%5D&validCode=&validateString=&isAnonymous=0&isSynchronous=false&starNum=0";//发送的内容
string result = PostHttp(plAddress, mywords, "application/x-www-form-urlencoded", cookie_container);
label2.Text = result;
// result= System.Web.HttpUtility.UrlEncode(result, Encoding.UTF8);
label1.Text = "发送了";
}
//post提交数据
/// <summary>
/// post提交数据
/// </summary>
/// <param name="url">提交的地址</param>
/// <param name="body">提交的数据(内容)</param>
/// <param name="contentType">浏览器的类型</param>
/// <param name="YMcookes">cookies数据</param>
/// <returns>返回的数据</returns>
public static string PostHttp(string url, string body, string contentType, CookieContainer YMcookes)
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.KeepAlive = true;
//获取Accept标头值
httpWebRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
//获取Referer标头值
httpWebRequest.Referer = "http://www.qidian.com/Default.aspx";
httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0";
httpWebRequest.CookieContainer = YMcookes; //获取关联的COIIkies
httpWebRequest.ContentType = contentType;//类型
httpWebRequest.Method = "POST";//提交方式
httpWebRequest.Timeout = 20000;
byte[] btBodys = Encoding.UTF8.GetBytes(body);//提交内容转化
httpWebRequest.ContentLength = btBodys.Length;
httpWebRequest.GetRequestStream().Write(btBodys, 0, btBodys.Length);
//返回浏览器的响应
HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
//获取响应的流数据
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();//流读取赋值
httpWebResponse.Close();
streamReader.Close();
httpWebRequest.Abort();
httpWebResponse.Close();
//获取返回的状态
var Intzt = (int)httpWebResponse.StatusCode;
string sd= httpWebResponse.StatusDescription;
return responseContent;
}
private void WebBw_NewWindow(object sender, CancelEventArgs e)
{
//打开新窗口时 让窗口在web里面打开
string url = ((WebBrowser)sender).StatusText;
WebBw.Navigate(url);
e.Cancel = true;
}
}