在网上有一个PHP文件,返回的格式是XML,之前我们查询的东西都是在本地查询,现在要用.net去查询网上的PHP文件,且要传参,各位帮帮忙,小弟这里谢过了。

解决方案 »

  1.   

    这是采集页面
    default.cs
     private System.Net.CookieContainer cookie = new System.Net.CookieContainer();
    string data="id=2&title=tcd"; //这里是参数
     string result = HttpHelper.GetHtml("http://www.***.com/b1.php", data, false, cookie);
    //result应该就是你想要得到的xml了
    HttpHelper.cs
    private static Encoding encoding = Encoding.GetEncoding("gb2312");
    #region 获取HTML
      /// <summary>
      /// 获取HTML
      /// </summary>
      /// <param name="url">地址</param>
      /// <param name="postData">post 提交的字符串</param>
      /// <param name="isPost">是否是post</param>
      /// <param name="cookieContainer">CookieContainer</param>
      /// <returns>html </returns>
      public static string GetHtml(string url, string postData, bool isPost, CookieContainer cookieContainer)
      {
      if (string.IsNullOrEmpty(postData))
      {
      return GetHtml(url, cookieContainer);
      }  Thread.Sleep(NetworkDelay);//等待  currentTry++;  HttpWebRequest httpWebRequest = null;
      HttpWebResponse httpWebResponse = null;
      try
      {
      byte[] byteRequest = Encoding.Default.GetBytes(postData);  httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
      httpWebRequest.CookieContainer = cookieContainer;
      httpWebRequest.ContentType = contentType;
      httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
      httpWebRequest.Referer = url;
      httpWebRequest.Accept = accept;
      httpWebRequest.UserAgent = userAgent;
      httpWebRequest.Method = isPost ? "POST" : "GET";
      httpWebRequest.ContentLength = byteRequest.Length;  Stream stream = httpWebRequest.GetRequestStream();
      stream.Write(byteRequest, 0, byteRequest.Length);
      stream.Close();  httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      Stream responseStream = httpWebResponse.GetResponseStream();
      StreamReader streamReader = new StreamReader(responseStream, encoding);
      string html = streamReader.ReadToEnd();
      streamReader.Close();
      responseStream.Close();
      currentTry = 0;  httpWebRequest.Abort();
      httpWebResponse.Close();  return html;
      }
      catch (Exception e)
      {
      //Console.ForegroundColor = ConsoleColor.Red;
      //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
      //Console.ForegroundColor = ConsoleColor.White;  if (currentTry <= maxTry)
      {
      GetHtml(url, postData, isPost, cookieContainer);
      }
      currentTry--;  if (httpWebRequest != null)
      {
      httpWebRequest.Abort();
      } if (httpWebResponse != null)
      {
      httpWebResponse.Close();
      }
      return string.Empty;
      }
      }
      /// <summary>
      /// 获取HTML
      /// </summary>
      /// <param name="url">地址</param>
      /// <param name="cookieContainer">CookieContainer</param>
      /// <returns>HTML</returns>
      public static string GetHtml(string url, CookieContainer cookieContainer)
      {
      Thread.Sleep(NetworkDelay);  currentTry++;
      HttpWebRequest httpWebRequest = null;
      HttpWebResponse httpWebResponse = null;
      try
      {  httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
      httpWebRequest.CookieContainer = cookieContainer;
      httpWebRequest.ContentType = contentType;
      httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
      httpWebRequest.Referer = url;
      httpWebRequest.Accept = accept;
      httpWebRequest.UserAgent = userAgent;
      httpWebRequest.Method = "GET";  httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      Stream responseStream = httpWebResponse.GetResponseStream();
      StreamReader streamReader = new StreamReader(responseStream, encoding);
      string html = streamReader.ReadToEnd();
      streamReader.Close();
      responseStream.Close();  currentTry--;  httpWebRequest.Abort();
      httpWebResponse.Close();  return html;
      }
      catch (Exception e)
      {
      //Console.ForegroundColor = ConsoleColor.Red;
      //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
      //Console.ForegroundColor = ConsoleColor.White;  if (currentTry <= maxTry)
      {
      GetHtml(url, cookieContainer);
      }  currentTry--;  if (httpWebRequest != null)
      {
      httpWebRequest.Abort();
      } if (httpWebResponse != null)
      {
      httpWebResponse.Close();
      }
      return string.Empty;
      }
      }
      /// <summary>
      /// 获取HTML
      /// </summary>
      /// <param name="url">地址</param>
      /// <returns>HTML</returns>
      public static string GetHtml(string url)
      {
      return GetHtml(url, cc);
      }
      /// <summary>
      /// 获取HTML
      /// </summary>
      /// <param name="url">地址</param>
      /// <param name="postData">提交的字符串</param>
      /// <param name="isPost">是否是POST</param>
      /// <returns>HTML</returns>
      public static string GetHtml(string url, string postData, bool isPost)
      {
      return GetHtml(url, postData, isPost, cc);
      }
      /// <summary>
      /// 获取字符流
      /// </summary>
      /// <param name="url">地址</param>
      /// <param name="cookieContainer">cookieContainer</param>
      /// <returns>Stream</returns>
      public static Stream GetStream(string url, CookieContainer cookieContainer)
      {
      //Thread.Sleep(delay);    currentTry++;
      HttpWebRequest httpWebRequest = null;
      HttpWebResponse httpWebResponse = null;  try
      {  httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
      httpWebRequest.CookieContainer = cookieContainer;
      httpWebRequest.ContentType = contentType;
      httpWebRequest.ServicePoint.ConnectionLimit = maxTry;
      httpWebRequest.Referer = url;
      httpWebRequest.Accept = accept;
      httpWebRequest.UserAgent = userAgent;
      httpWebRequest.Method = "GET";  httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
      Stream responseStream = httpWebResponse.GetResponseStream();
      currentTry--;  //httpWebRequest.Abort();  
      //httpWebResponse.Close();    return responseStream;
      }
      catch (Exception e)
      {
      //Console.ForegroundColor = ConsoleColor.Red;
      //Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + e.Message);
      //Console.ForegroundColor = ConsoleColor.White;  if (currentTry <= maxTry)
      {
      GetHtml(url, cookieContainer);
      }  currentTry--;  if (httpWebRequest != null)
      {
      httpWebRequest.Abort();
      } if (httpWebResponse != null)
      {
      httpWebResponse.Close();
      }
      return null;
      }
      }
      #endregion
      

  2.   


    byte [] postData = Encoding.ASCII.GetBytes(param);//参数 "?"后面的一串字符串
                    request = (HttpWebRequest)WebRequest.Create(url);//网络地址
                    request.AllowWriteStreamBuffering = true;
                    //request.Connection = "KeepAlive";
                    //request.KeepAlive
                    //request.CookieContainer.Add(Cookies);                stream = request.GetRequestStream();
                    stream.Write(postData, 0, postData.Length);
                    stream.Close();                response = (HttpWebResponse)request.GetResponse();
                    stream = response.GetResponseStream();