从响应中读取文本

HttpWebRequest request = WebRequest.Create("http://google.com") as HttpWebRequest; request .Accept = "application/xrds+xml"; HttpWebResponse response = (HttpWebResponse)request .GetResponse(); WebHeaderCollection header= response.Headers; 

这里谷歌返回文本。 如何阅读?

你的"application/xrds+xml"给了我一些问题,我收到一个Content-Length 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(); } 

接受的答案不正确地处理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(); } } 

.NET 4.5

 public static async Task<string> GetResponseText(string address) { using (var httpClient = new HttpClient()) return await httpClient.GetStringAsync(address); } 

我只是自己试了一下,它给了我200 OK的回应,但没有内容 – 内容长度是0.你确定它给你的内容? 无论如何,我会假设你真的有内容。

获取实际的文本依赖于知道编码,这可能是棘手的。 它应该在Content-Type头部,但是你必须parsing它。

但是,如果这实际上是 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); } } 

如果内容是XML,则将结果获取到XML对象模型(无论是XDocumentXmlDocument还是XmlReader )可能比使用纯文本更有价值。

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.google.com"); request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream dataStream = response.GetResponseStream(); StreamReader reader = new StreamReader(dataStream); string strResponse = reader.ReadToEnd(); 

应该使用response.GetResponseStream()来返回响应stream。 不要忘记close StreamResponse对象。

本文给出了使用HttpWebResponse对象的一个​​很好的概述: 如何使用HttpWebResponse

相关位如下:

  HttpWebResponse webresponse; webresponse = (HttpWebResponse)webrequest.GetResponse(); Encoding enc = System.Text.Encoding.GetEncoding(1252); StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(),enc); string Response = loResponseStream.ReadToEnd(); loResponseStream.Close(); webresponse.Close(); return Response;