手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

用post方法从网上抓取信息

来源:互联网 作者:west263.com 时间:2008-02-22
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

前些天有个要求要从某个网站上取信息,但是该网站要求用post方式访问的.现在这里贴两个google到的方法.

using System.Net;

static string WebClinetPost(string url, string postData,string encodeType,out string err)
{
string uriString = url;
byte[] byteArray;
byte[] responseArray;
//postData = "checkvalue=32&bbb=投票&ilc=0&kkk=22";
Encoding encoding = Encoding.GetEncoding(encodeType);
try
{
WebClient myWebClient = new WebClient();
WebHeaderCollection myWebHeaderCollection;
myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");
//myWebClient.Headers.Add("Referer","http://xxxxx/xxxxxxxxxxxxxxxxxxxxxxxx");
//myWebClient.Headers.Add("Accept-Language","zh-cn");
myWebHeaderCollection = myWebClient.Headers;

byteArray = encoding.GetBytes(postData);
responseArray = myWebClient.UploadData(uriString,"POST",byteArray);

err=string.Empty;
return encoding.GetString(responseArray);
}
catch(Exception ex)
{
err=ex.Message;
return string.Empty;
}
}
public static string HttpWebResponsePost(string url, string postData,string encodeType,out string err)
{

Stream outstream = null;

Stream instream = null;

StreamReader sr = null;

HttpWebResponse response = null;

HttpWebRequest request = null;

Encoding encoding = Encoding.GetEncoding(encodeType);

byte[] data = encoding.GetBytes(postData);

try

{

request = WebRequest.Create(url) as HttpWebRequest;

CookieContainer cookieContainer = new CookieContainer();

request.CookieContainer = cookieContainer;

request.AllowAutoRedirect = true;

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.ContentLength = data.Length;

outstream = request.GetRequestStream();

outstream.Write(data,0,data.Length);

outstream.Close();

response = request.GetResponse() as HttpWebResponse;
instream = response.GetResponseStream();
sr = new StreamReader( instream, encoding );
string content = sr.ReadToEnd();

err = string.Empty;
return content;

}

catch(Exception ex)
{

err = ex.Message;
return string.Empty;

}
}

调用代码:
string url="http://xxxxxx/xxxxxxxx/scrrm00542.jsp";
string postData="proj_id=600197&theSubmit=600197";
string encodeType="utf-8";
string err="";
//string content=HttpWebResponsePost(url,postData,encodeType,out err);
string content=WebClinetPost(url,postData,encodeType,out err);

另外,再附上javascript实现的代码吧:
<script language=javascript>
function GetData()
{

var postData = "proj_id=600197&theSubmit=600197";
var http = new GetXMLHTTPRequest();
http.open('POST', 'http://xxxxxxxxxx/xxxxxx/scrrm00542.jsp', false);
http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
http.send(postData);

return http.responseText;
}

function GetXMLHTTPRequest()
{
var progIDs = ["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for (var i = 0; i < progIDs.length; i)
{
var progID = progIDs[i];
try
{
var x = new ActiveXObject(progID);
return x;
}
catch (e)
{}
}
}
</script>

http://www.cnblogs.com/lwyaster/archive/2007/01/09/615815.html

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!