WEB开发网
开发学院WEB开发ASP.NET 用post方法从网上抓取信息 阅读

用post方法从网上抓取信息

 2007-01-10 17:21:17 来源:WEB开发网   
核心提示:前些天有个要求要从某个网站上取信息,但是该网站要求用post方式访问的.现在这里贴两个google到的方法.using System.Net;static string WebClinetPost(string url, string postData,string encodeType,out string err)

前些天有个要求要从某个网站上取信息,但是该网站要求用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, 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

Tags:post 方法 网上

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接