asp教程.net 模似http請求代碼
/*
一般 模似http請求都用到sock來,設定一些相關請求,讓伺服器覺得是使用者正常瀏覽。
*/
//返回 0 成功註冊 1 帳戶錯誤 2 網路不通 3 驗證碼錯誤 4登陸次數過多
public int regpost(ref taccountinfo taccountinfo)
{
clog.writelog("regpost start");
string url = "http://***";
httpwebrequest request = (httpwebrequest)httpwebrequest.create(url);
request.method = "post";
request.contenttype = "application/x-www-form-urlencoded";
request.headers.add("accept-language", "zh-cn");
request.servicepoint.expect100continue = false;
request.cookiecontainer = m_cookiecontainer;
//填充要post的內容
string strpostdata = "***";
byte[] bytestopost = encoding.ascii.getbytes(strpostdata);
request.contentlength = bytestopost.length;
//request.allowautoredirect = false;
stream requeststream = null;
try
{
requeststream = request.getrequeststream();
requeststream.write(bytestopost, 0, bytestopost.length);
}
catch
{
if (requeststream != null)
{
requeststream.dispose();
}
request.abort();
clog.writelog("regpost end 1");
return 2;
}
requeststream.close();
int nstatus = 0;
try
{
httpwebresponse response = (httpwebresponse)request.getresponse();
nstatus = response.statuscode.gethashcode();
stream responsestream = response.getresponsestream();
streamreader readstream = new streamreader(responsestream, system.text.encoding.utf8);
string page = readstream.readtoend();
response.close();
clog.writelog("regpost end 2");
//如果登陸失敗,分析原因
//分析結果
if (isyzmwrong(ref page))
{
return 3;// 驗證碼錯誤
}
else if (isloginsuccess(ref page))//成功
{
return 0;
}
else
{
return 1;// 帳戶密碼錯誤
}
}
catch
{
clog.writelog("regpost end 3");
request.abort();
return 2;
}
}