110,533
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Net;
using System.IO;
using System.Text;
namespace Farm
{
/// <summary>
/// HTTP请求类
/// </summary>
public class MyHttp
{
public MyHttp()
{
}
#region 通过Post方式发送数据
/// <summary>
/// 通过Post方式发送数据
/// </summary>
/// <param name="Url">Url</param>
/// <param name="postDataStr">Post数据</param>
/// <param name="cookie">cookie</param>
/// <returns>返回数据</returns>
public static string SendDataByPost(string Url, string postDataStr, ref CookieContainer cookie)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// new Add
//request.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
request.ContentLength = postDataStr.Length;
Stream myRequestStream = request.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(postDataStr);
myStreamWriter.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string retString= myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
catch
{
return "";
}
}
#endregion
#region 同步通过GET方式发送数据
/// <summary>
/// 通过GET方式发送数据
/// </summary>
/// <param name="Url">url</param>
/// <param name="postDataStr">GET数据</param>
/// <param name="cookie">GET容器</param>
/// <returns></returns>
public static string SendDataByGET(string Url, string postDataStr, ref CookieContainer cookie)
{
string sendurl = Url +(postDataStr == "" ? "" : "?") + postDataStr;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sendurl);
//HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url +(postDataStr == "" ? "" : "?") + postDataStr);
if (cookie.Count == 0)
{
request.CookieContainer = new CookieContainer();
cookie = request.CookieContainer;
}
else
{
request.CookieContainer = cookie;
}
request.Method = "GET";
request.ContentType = "text/html;charset=utf-32";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
#endregion
}
}
private bool LoginGame(string name, string pwd)
{
string Url0 = "https://passport.baidu.com/?login&tpl=sp&tpl_reg=spsp&u=http%3A%2F%2Fapps.hi.baidu.com%2Fsunfarm";
string Url1 = "https://passport.baidu.com/?login";
string Url2 = "http://apps.hi.baidu.com/sunfarm";
string Url3 = "http://sunfarm.baiduapp.com";
string Url4 = "http://sunfarm.baiduapp.com/embed_swf/";
string KeyWord = "session_name=sessionid";
string SesssionIdKeyWord = "session_value=";
string UidKeyWord = "uid=";
string strRet = "";
CommandParams cpm = this.GetLoginParams(name, pwd);
CookieContainer cc = new CookieContainer();
strRet = MyHttp.SendDataByGET(Url1, cpm.Cp, ref cc);
//strRet = MyHttp.SendDataByPost(Url1, cpm.Cp, ref cc);
//WriteLog("Length:" + strRet.Length.ToString());
//WriteLog(strRet);
if (strRet.IndexOf(Url2) == -1)
{
return false;
}
try
{
strRet = MyHttp.SendDataByGET(Url2, "", ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(Url3) == -1)
{
return false;
}
string UrlData1 = AnalyzingHtmlCode(strRet);
//WriteLog(UrlData1);
strRet = MyHttp.SendDataByGET(Url3, UrlData1, ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(Url4) == -1)
{
return false;
}
string UrlData2 = AnalyzingHtmlCode(strRet, Url4);
//WriteLog(UrlData2);
strRet = MyHttp.SendDataByGET(Url4, UrlData2, ref cc);
//WriteLog(strRet);
if (strRet.IndexOf(KeyWord) == -1)
{
return false;
}
else
{
this.SessionId = Tools.GetValueByKey(strRet, SesssionIdKeyWord, "&", "\"").Replace(SesssionIdKeyWord, "");
this.Uid = Tools.GetValueByKey(strRet, UidKeyWord, "&", "\"").Replace(UidKeyWord, "");
}
}
catch
{
return false;
}
return true;
}