HttpWebRequest 获取页面

关于在WinForm里用HttpWebRequest获得某个页面,并填写页面的textbox及点击button的方法方法如下: 
以下代码是向一个指定的页面发送请求,填写三个textbox,click一个button,并得到Server端的执行是否成功的class。注:由于页面的代码也是我写的,所以我知道将要Post页面的结构,即我知道每个页面控件的name和页面结构。


public class FtpMessage
{
     private string m_fileName;
     private string m_host;
     private string aspValue;     
     public FtpMessage(string fileName,string hostUrl)
     {
          //指定的一个信息,将用于填写TextBoxFileName。
          m_fileName = fileName;
          //指定的URL
          m_host = hostUrl;
     }
     public bool SendCompleteMessage(string user,string password)
     {
          bool isSendMessageSuccess = false;
          HttpWebRequest request = (HttpWebRequest)WebRequest.Create(" http://"+m_host);
          //得到网页。
          WebResponse response = null;
          response = request.GetResponse();
          Stream readStream = response.GetResponseStream();
          StreamReader sr = new StreamReader(readStream,Encoding.GetEncoding("utf-8"));
          string content = "";
          int index = -1;
          //寻找数据
          while (index < 0 && content != null) 
          {
               content = sr.ReadLine();
               //得到标准的ASPX页面的头一共26个字节,以("name=/"__VIEWSTATE/" value=/""开始的
               index = content.IndexOf("name=/"__VIEWSTATE/" value=/"",0);
          }
          index += 26;
          int endIndex = content.LastIndexOf("/"");
          //形成目标数据。
          if (index > 26 && endIndex > index)
          {
               //得到页面数据段
               aspValue = content.Substring(index,endIndex-index);
               StringBuilder tempData = new StringBuilder();
               tempData.Append("__VIEWSTATE=");
               tempData.Append(HttpUtility.UrlEncode(aspValue));
               //填写TextBoxFileName的值,其值见后
               tempData.Append("&TextBoxFileName=");
               tempData.Append("(content1)");
               //填写TextBoxUser的值,其值见后
               tempData.Append("&TextBoxUser=");
               tempData.Append("(content2)");
               //填写TextBoxPassword的值,其值见后
               tempData.Append("&TextBoxPassword=");
               tempData.Append("(content3)");
               //填写Button Click 的Message
               tempData.Append("&ButtonForData=");
               tempData.Append(HttpUtility.UrlEncode("Message"));
               aspValue = tempData.ToString();
          }
          string content1 = m_fileName;
          string content2 = user;
          string content3 = password;
          WebResponse response1 = null;
          //替换预传送的数据。
          string tempData1 = aspValue.Replace("(content1)",HttpUtility.UrlEncode(content1));
          string tempData2 = tempData1.Replace("(content2)",HttpUtility.UrlEncode(content2));
          string tempData3 = tempData2.Replace("(content3)",HttpUtility.UrlEncode(content3));
          byte [] postData = Encoding.UTF8.GetBytes(tempData3.ToString());
          HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create(" http://"+m_host);
         //设定工作属性。
          request1.Method = "POST";
          request1.ContentType = "application/x-www-form-urlencoded";
          request1.ContentLength = postData.Length;
          //上传数据。
          Stream writeStream = request1.GetRequestStream();
          writeStream.Write(postData,0,postData.Length);
          writeStream.Close();
          //下载回应消息。
          string serverMessage = "";
          try
          {
               response1 = request1.GetResponse();
               //这里的response1是Server在Button点击后跳转到的另一个页面,这个页面有一个值表示是否成功
               //我将取得其值作为函数的返回值
               Stream readStream1 = response1.GetResponseStream();
               int i = 1024;
               byte[] hehe = new byte[i];
               readStream1.Read(hehe,0,i);
               readStream1.Close();
               StringBuilder hehe1 = new StringBuilder();
               //由于我知道页面的结构,我可以从页面得到这个值。
               for(int j=658;j<662;j++)
               {
                    hehe1.Append((char)hehe[j]);
               }
               serverMessage = hehe1.ToString();
           }
           catch(Exception E)
           {
                 string tempError = E.Message;
           }
           if(serverMessage == "true")
           {
                isSendMessageSuccess = true;
           }
           return isSendMessageSuccess;
     }
}

网页部分的代码没有写,就是一个aspx的页面,先拖三个textbox上去,再拖一个button上去(都是web的,不是html的),
三个textbox依次命名为:TextBoxFileName,TextBoxUser,TextBoxPassword,
button命名为:ButtonForData,处理方法就写在这个butt onclick方法里,可以直接取this.TextBoxFileName等控件的值即可以在butt onclick里写
"string ss = this.TextBoxFileName.Text;" 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vb.net可以使用HttpWebRequest和HttpWebResponse类来获取网页内容。 首先,我们需要导入System.Net命名空间。 然后,可以使用HttpWebRequest类创建一个请求对象,并设置请求的URL地址和其他相关属性。例如: ```vb Dim request As HttpWebRequest = CType(WebRequest.Create("http://www.example.com"), HttpWebRequest) request.Method = "GET" request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3" ``` 在上面的代码中,我们创建了一个GET请求对象,并设置了请求的URL和User-Agent头部信息。 接下来,可以使用HttpWebResponse类发送请求,并获取服务器返回的响应。例如: ```vb Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse) ``` 通过上面的代码,我们发送Get请求,并获得服务器的响应。 最后,我们可以通过响应对象的GetResponseStream方法获取到服务器返回的内容,并读取出来。例如: ```vb Dim reader As New StreamReader(response.GetResponseStream(), Encoding.[Default]) Dim content As String = reader.ReadToEnd() ``` 通过上面的代码,我们使用StreamReader类读取响应的内容,并保存到一个字符串中。 最终,我们可以使用content变量来获取到网页的内容。 以上就是使用vb.net获取网页内容的基本步骤。当然,还可以根据具体需求对请求和响应进行更多的设置和操作。例如,可以设置请求的超时时间、添加请求头部信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值