2012-06-24 45 views
-3

这是我的阅读网页。在c# lang。
但我在执行它时遇到了一些异常。 任何人都知道为什么?http在C#获取页面

  try 
     { 
      string address = "http://" + txtMsg.Text; 
      int port = int.Parse(textBox1.Text); 
      System.Net.WebClient webclient = new WebClient(); 
      String content = webclient.DownloadString(address); 

      Socket skt = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
      skt.Connect(address, port); 
      string hdrs = "GET " + address + ":" + port + " HTTP/1.1\r\n" 
       + "Host: " + address + ":" + port + "\r\n"; 
      byte[] req_as_bytes = Encoding.UTF8.GetBytes(hdrs); 
      skt.Send(req_as_bytes); 
      byte[] data = new byte[1024 * 200]; 
      int t = skt.Receive(data); 
      lstMsg.Items.Add(Encoding.UTF8.GetString(data, 0, t)); 
      skt.Shutdown(SocketShutdown.Both); 
      skt.Close(); 

      btnConnect.Text = "done"; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
+0

**你得到了什么错误**?你读过它吗? – SLaks

+0

这是一个例外:“请求的名字是有效的,但没有找到请求类型的数据” – user1472850

+2

你在做错误的HTTP。阅读规范,并在Fiddler中查看真实的请求,或者(非常可取的)使用'WebClient'并让Microsoft完成这项工作。 – SLaks

回答

3

行!
我找到了解决方案:

private void btnConnect_Click(object sender, EventArgs e) 
    { 
     var address = "http://" + txtMsg.Text; 
     var webclient = new System.Net.WebClient(); 
     var content = webclient.DownloadString(address); 
     //any work 
     btnConnect.Text = "done"; 
    }