用post方法从网上抓取信息

时间:2008-10-07 12:22:34  来源:第二电脑网上收集  作者:

  第二电脑网导读:ring 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(encodeTyp...
  正文: 前些天有个要求要从某个网站上取信息,但是该网站要求用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

"用post方法从网上抓取信息"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/ASP/2008-10-07/3470.html


关键字:

关于《用post方法从网上抓取信息》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td