• HttpWebRequest类与WebRequest类的使用


    1、System.Net.HttpWebRequest 类
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemnetwebrequestclasstopic.asp

    如下代码以Post方式发送数据:
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Text.RegularExpressions;

    private void btnConfirm_Click(object sender, System.EventArgs e)
      {
       string UserName = txtUserName.Text;
       string SpotID = txtSpotID.Text;
       string BBS = txtBBS.Text;
       string Board = txtBoard.Text;
       string Title = txtTitle.Text;
       string Content = txtContent.Text;
       Content = NoHTML(Content);//去除HTML标记
       string UserIp = Request.ServerVariables["REMOTE_HOST"].ToString();   
       string PostUrl = "";
       string PostDateTime = DateTime.Now.ToString();
       
       string WebSite = "";//服务器接收页面
       WebSite = System.Configuration.ConfigurationSettings.AppSettings["PostUrl"];

       string strQuery = "UserName="+ UserName +"&SpotID="+ SpotID +"&BBS="+ BBS +"&Board="+ Board +
        "&Title="+ Title +"&Content="+ Content +"&UserIp="+ UserIp +"&PostUrl="+ PostUrl +"&PostDateTime="+ PostDateTime;//数据参数队列 
      Encoding encoding = Encoding.UTF8;
       byte[] data = encoding.GetBytes(strQuery);
       
       // 准备请求...
       HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(WebSite);
       myRequest.Method = "POST";
       myRequest.ContentType="application/x-www-form-urlencoded";
       myRequest.ContentLength = data.Length;
       Stream newStream=myRequest.GetRequestStream();
       // 发送数据
       newStream.Write(data,0,data.Length);
       newStream.Close();
       
       Page.RegisterStartupScript("script",GetShowAlert("发表成功!","window.location.href('ClientPostNote.aspx');")); 
       }

       /// <summary>
      /// 去除HTML标记
      /// </summary>
      /// <param name="Htmlstring">包括HTML的源码 </param>
      /// <returns>已经去除后的文字</returns>
      public string NoHTML(string Htmlstring)
      {
       //删除脚本
       Htmlstring = Htmlstring.Replace("\r\n","");
       Htmlstring = Regex.Replace(Htmlstring,@"<script.*?</script>","",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"<style.*?</style>","",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"<.*?>","",RegexOptions.IgnoreCase);
       //删除HTML
       Htmlstring = Regex.Replace(Htmlstring,@"<(.[^>]*)>","",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"([\r\n])[\s]+","",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"-->","",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"<!--.*","",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(quot|#34);","\"",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(amp|#38);","&",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(lt|#60);","<",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(gt|#62);",">",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(nbsp|#160);","",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(iexcl|#161);","\xa1",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(cent|#162);","\xa2",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(pound|#163);","\xa3",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&(copy|#169);","\xa9",RegexOptions.IgnoreCase);
       Htmlstring = Regex.Replace(Htmlstring,@"&#(\d+);","",RegexOptions.IgnoreCase); 
       Htmlstring = Htmlstring.Replace("<","");
       Htmlstring = Htmlstring.Replace(">","");
       Htmlstring = Htmlstring.Replace("\r\n","");   
       Htmlstring=HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
       return Htmlstring;
      }

    public string GetShowAlert(string info,string action)
      {
       string strScript = String.Empty;
       strScript = "<script language=javascript> \r\n";
       strScript += "document.onreadystatechange = ShowAlert;\r\n";
       strScript += "function ShowAlert() \r\n";
       strScript += "{\r\n";
       strScript += "if(document.readyState == \"complete\") \r\n";
       strScript += "{\r\n";
       strScript += "alert('" + info.Replace("'","").Replace("\n","").Replace("\r","") + "');\r\n";
       if(action.Length > 0)
       {
        if(action[action.Length-1]!=';')
         action = action + ";";
        strScript += action + " \r\n";
       }
       strScript += "}\r\n";
       strScript += "}\r\n";
       strScript += "</script>";
       return strScript;
      }

    2、System.Net.WebRequest 类
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemnetwebrequestclasstopic.asp

    如下代码以Get方式异步发送数据:
    using System.IO;
    using System.Net;
    using System.Text.RegularExpressions;
    private void btnConfirm_Click(object sender, System.EventArgs e)
      {
       string UserName = txtUserName.Text;
       string SpotID = txtSpotID.Text;
       string BBS = txtBBS.Text;
       string Board = txtBoard.Text;
       string Title = txtTitle.Text;
       string Content = NoHTML(txtContent.Text);
       string UserIp = Request.ServerVariables["REMOTE_HOST"].ToString();   
       string PostUrl = "";
       string PostDateTime = DateTime.Now.ToString();

       string noteinfo = "";//帖子内容
       noteinfo = "帖子内容:"
        +"\r\n   用户名:"+ UserName +"\r\n   网站:"+ SpotID +"\r\n   论坛:"+ BBS
        +"\r\n   版块:"+ Board +"\r\n   标题:"+ Title +"\r\n   内容:"+ Content
        +"\r\n   IP:"+ UserIp +"\r\n   URL:"+ PostUrl +"\r\n";

       string WebSite = "";//服务器接收页面
       WebSite = System.Configuration.ConfigurationSettings.AppSettings["PostUrl"];
       string Parameters = "UserName;SpotID;BBS;Board;Title;Content;UserIp;PostUrl;PostDateTime";
       string ParameterValues = UserName+";"+SpotID+";"+BBS+";"+Board+";"+Title+";"+Content+";"+UserIp+";"+PostUrl+";"+PostDateTime;
       
       BLLPostData(noteinfo,WebSite,Parameters,ParameterValues);//异步Post数据
       
       Page.RegisterStartupScript("script",GetShowAlert("发表成功!","window.location.href('AddNoteNet.aspx');")); 
      }

      public void BLLPostData(string noteinfo,string WebSite,string Parameters,string ParameterValues)
      {
       BLLPostDataDeal(noteinfo,WebSite,Parameters,ParameterValues);
      }
      /// <summary>
      /// 异步Post数据
      /// </summary>
      private void BLLPostDataDeal(string noteinfo,string WebSite,string Parameters,string ParameterValues)
      {
       AsyncPostDataDeal asynci = new AsyncPostDataDeal(AsPostDataDeal);
       //AsyncCallback cb = new AsyncCallback(Results);
       //IAsyncResult ar = asynci.BeginInvoke(PhoneNo,LoginName,Mobile,CusID,XMLData,cb,asynci);
       
       //在开始异步调用时不提供回调委托
       IAsyncResult ar = asynci.BeginInvoke(noteinfo,WebSite,Parameters,ParameterValues,null,asynci);
      } 
      public delegate void AsyncPostDataDeal(string noteinfo,string WebSite,string Parameters,string ParameterValues);
      private void AsPostDataDeal(string noteinfo,string WebSite,string Parameters,string ParameterValues)
      { 
       string msg = "";//日志
       try
       {
        if(WebSite!="")
        {
         string RegResult = "";//接收返回值
         RegResult = ConnectToWebSite2(WebSite,Parameters,ParameterValues);
         //int IsSuccess = -1;//接收情况
         
         if(RegResult=="Y")
         {
          //IsSuccess = 1;
          msg = DateTime.Now.ToString() + "  帖子传输成功!\r\n" + noteinfo;
          Log(msg);
         }
         else if(RegResult=="N")
         {
          //IsSuccess = 0;
          msg = DateTime.Now.ToString() + "  数据插入出现问题,传输不成功!\r\n" + noteinfo;
          Log(msg);
         }
         else if(RegResult=="F")
         {
          //IsSuccess = 2;
          msg = DateTime.Now.ToString() + "  服务器出现问题,传输不成功!\r\n" + noteinfo;
          Log(msg);
         }
        }
        else
        {
         msg = DateTime.Now.ToString() + "  未取得传输网址,不能继续进行传输!\r\n" + noteinfo;
         Log(msg);
        }
       }
       catch(Exception ex)
       {
        msg = DateTime.Now.ToString() + "  传输失败!错误如下:"+ ex.Message +"\r\n" + noteinfo;
        Log(msg);
       }
      }

       /// <summary>
      /// 用指定的参数(“;”分隔)访问指定的网址
      /// </summary>
      /// <param name="网址"></param>
      /// <param name="参数名称"></param>
      /// <param name="参数值"></param>
      /// <returns></returns>
      public string ConnectToWebSite2(string Web,string Parameters,string ParameterValues)
      {
       string sPageText="";
       
       Stream responseStream=null;
       StreamReader reader=null;

       Web+="?1=1";

       if (Parameters.Trim() == "" || ParameterValues.Trim() == "")
       {
        Log("参数或参数值没指定,请确认!");
       }
       else
       {
        string Delimeter = ";";
        string[] aryParm = Parameters.Split(Delimeter.ToCharArray());
        string[] aryParmValue = ParameterValues.Split(Delimeter.ToCharArray());

        if (aryParm.Length != aryParmValue.Length)
        {
         Log("参数的数量和参数值的数量不相等,请确认!");
        }
        else
        {
         for (int i=0; i<aryParm.Length; i++)
         {
          aryParmValue[i] = System.Web.HttpUtility.UrlEncode(aryParmValue[i].ToString());
          Web+="&"+aryParm[i].Trim()+"="+aryParmValue[i].Trim();
         }
         System.Uri RegUri=new Uri(Web);
         WebRequest request=WebRequest.Create(RegUri);
         WebResponse response=request.GetResponse();
         try
         {
          responseStream=response.GetResponseStream();
          reader=new StreamReader(responseStream,System.Text.Encoding.Default);
          sPageText=reader.ReadToEnd();
         }
         finally
         {
          reader.Close();
          responseStream.Close();
          response.Close();
         }
        }
       }
       return sPageText;
      }

    public void Log(string logText)
      {
       string strPath = AppDomain.CurrentDomain.BaseDirectory + @"\Log";
       if (!System.IO.Directory.Exists(strPath))
       {     
        System.IO.Directory.CreateDirectory(strPath);
       }

       StreamWriter sw = null;
       string fileName= strPath + @"\log.txt";
       if (File.Exists(fileName))
       {
        sw = File.AppendText(fileName);
       }
       else
       {
        sw = new StreamWriter(fileName);
       }
       sw.WriteLine(logText);
       sw.Close();  
       }

  • 相关阅读:
    模拟Spring的Ioc
    Java常见异常总结
    Java编码与乱码问题
    Java正则表达式入门
    观察者模式
    Java内存泄漏问题
    责任链模式
    选择排序(C++/Java实现)
    设计模式学习工厂模式
    Java验证码
  • 原文地址:https://www.cnblogs.com/huazai8204/p/764146.html
Copyright © 2020-2023  润新知