【问题标题】:HTTP Request to get HTML code in C#在 C# 中获取 HTML 代码的 HTTP 请求
【发布时间】:2017-11-23 18:07:21
【问题描述】:

我想从http://www.w3schools.com/ 获取 HTML 代码 这是我的代码:

    static void Main(string[] args)
    {
        TcpClient client = new TcpClient("www.w3schools.com", 80);
        client.SendTimeout = 3000;
        client.ReceiveTimeout = 3000;
        StreamWriter writer = new StreamWriter(client.GetStream());
        StreamReader reader = new StreamReader(client.GetStream());
        writer.WriteLine("GET www.w3schools.com HTTP/1.1");
        writer.WriteLine("Host: www.w3schools.com");
        writer.WriteLine();
        writer.Flush();

        string response = reader.ReadToEnd();

        Console.WriteLine("Got Response: {0}", response);

        Console.ReadLine();
    }

但我得到以下信息: 我哪里错了?

【问题讨论】:

标签: c#


【解决方案1】:

GET 行的第二个元素应该是查询路径,而不是域名。这应该有效:

writer.WriteLine("GET / HTTP/1.1");
writer.WriteLine("Host: www.w3schools.com");

【讨论】:

    【解决方案2】:
    1. 要让这个 TcpClient 工作,您需要一个 Wporking TcpServer。
    2. 正确的 uri 应该类似于 ("https://www.w3schools.com/html/default.asp"),其中将在 .com 之后提供文件名。

    即使没有 TcpServer,下面的代码也可以工作。

    public static void getSavedHtmlCode()
        {
            string html = string.Empty;
    
    
            try
            {
                var request = System.Net.HttpWebRequest.Create(string.Format("{0}", "https://www.w3schools.com/html/default.asp"));
                request.Method = "GET";
                var response = (HttpWebResponse)request.GetResponse();
    
                //prepare as html
                //html = new StreamReader(response.GetResponseStream()).ReadToEnd();
    
                // Get the stream associated with the response.
                Stream receiveStream = response.GetResponseStream();
    
                // Pipes the stream to a higher level stream reader with the required encoding format. 
                StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
    
                //prepare as html
                html = readStream.ReadToEnd();
    
                Console.WriteLine("Response stream received.");
                Console.WriteLine(html);
    
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      相关资源
      最近更新 更多