阅读回复中的文字

Nir*_*bey 66 c# asp.net

HttpWebRequest request = WebRequest.Create("http://google.com") as HttpWebRequest;  

request.Accept = "application/xrds+xml";  
HttpWebResponse response = (HttpWebResponse)request.GetResponse();  

WebHeaderCollection header = response.Headers;
Run Code Online (Sandbox Code Playgroud)

谷歌在这里返回文字.怎么看?

STW*_*STW 106

"application/xrds+xml"给我的问题,我收到的内容长度为0(没有回复).

删除后,您可以使用访问响应response.GetResponseStream().

HttpWebRequest request = WebRequest.Create("http://google.com") as HttpWebRequest;

//request.Accept = "application/xrds+xml";  
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

WebHeaderCollection header = response.Headers;

var encoding = ASCIIEncoding.ASCII;
using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
    string responseText = reader.ReadToEnd();
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这是假设ASCII编码,这可能是不正确的. (11认同)

Sam*_*Sam 71

接受的答案没有正确处理WebResponse或解码文本.此外,还有一种在.NET 4.5中执行此操作的新方法.

要执行HTTP GET并读取响应文本,请执行以下操作.

.NET 1.1 - 4.0

public static string GetResponseText(string address)
{
    var request = (HttpWebRequest)WebRequest.Create(address);

    using (var response = (HttpWebResponse)request.GetResponse())
    {
        var encoding = Encoding.GetEncoding(response.CharacterSet);

        using (var responseStream = response.GetResponseStream())
        using (var reader = new StreamReader(responseStream, encoding))
            return reader.ReadToEnd();
    }
}
Run Code Online (Sandbox Code Playgroud)

.NET 4.5

private static readonly HttpClient httpClient = new HttpClient();

public static async Task<string> GetResponseText(string address)
{
    return await httpClient.GetStringAsync(address);
}
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 10

我刚试过这个,它给了我200 OK回复,但没有内容 - 内容长度为0.你确定它会给你内容吗?无论如何,我会假设你真的有内容.

获取实际文本依赖于知道编码,这可能很棘手.它应该在Content-Type标题中,但是你必须解析它等等.

但是,如果这实际上是 XML(例如来自" http://google.com/xrds/xrds.xml "),则会更容易.只需将XML加载到内存中,例如通过LINQ to XML.例如:

using System;
using System.IO;
using System.Net;
using System.Xml.Linq;
using System.Web;

class Test
{
    static void Main()
    {
        string url = "http://google.com/xrds/xrds.xml";
        HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);

        XDocument doc;
        using (WebResponse response = request.GetResponse())
        {
            using (Stream stream = response.GetResponseStream())
            {
                doc = XDocument.Load(stream);
            }
        }
        // Now do whatever you want with doc here
        Console.WriteLine(doc);
    }   
}
Run Code Online (Sandbox Code Playgroud)

如果内容是XML,得到的结果为XML对象模型(无论是XDocument,XmlDocumentXmlReader)可能比具有纯文本更有价值.

  • @CodeBlend:再说一遍,如果你检查并发现它**是*null你会怎么做?在大多数情况下,你基本上无法继续,所以你想抛出一个异常,说某些东西出乎意料地为空 - 肯定是NullReferenceException或ArgumentNullException会为你做什么...... (2认同)