asp.net AJAX POST抓取

来源:互联网 发布:温故知今txt下载 编辑:程序博客网 时间:2024/05/18 01:22

 

前些天有个要求要从某个网站上取信息,但是该网站要求用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=%视频教程'>cd%B6%C6%B1&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, stringpostData,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()

 {

 

  varpostData = "proj_id=600197&theSubmit=600197";

  varhttp = 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()

 {

  varprogIDs = ["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>