C# 从WebResponse读取响应的最简单方法

C# 从WebResponse读取响应的最简单方法,c#,C#,现在有了webResponse对象,读取其内容的最简单方法是什么?我只需在WebClient上使用异步方法即可——使用起来容易得多: private void RespCallback(IAsyncResult asynchronousResult) { try { WebRequest myWebRequest1 = (WebRequest)asynchronousResult.AsyncState; // End the Asynchrono

现在有了webResponse对象,读取其内容的最简单方法是什么?

我只需在
WebClient上使用异步方法即可
——使用起来容易得多:

private void RespCallback(IAsyncResult asynchronousResult)
{
    try
    {
        WebRequest myWebRequest1 = (WebRequest)asynchronousResult.AsyncState;

        // End the Asynchronous response.
        WebResponse webResponse = myWebRequest1.EndGetResponse(asynchronousResult);
    }
    catch (Exception)
    {
        // TODO:Log the error
    }
}
但要回答这个问题;假设它是文本,类似(注意您可能需要指定编码):


如果响应来自XML,那么这里有一种方法

        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            string result = reader.ReadToEnd(); // do something fun...
        }

流必须使用using block进行包装。@Jaye否,您也可以稍后处理它。关于第二个选项,使用GetResponseStream的选项。我认为您还应该处理响应流,而不仅仅是StreamReader,例如,通过将代码包装到第二个“使用”结构中。在第一个“使用”中,您可以获取流对象的引用,在第二个中,您可以创建StreamReader。
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            string result = reader.ReadToEnd(); // do something fun...
        }
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("https://www.yoururl.com");
WebResponse response = myReq.GetResponse();
Stream responseStream = response.GetResponseStream();
XmlTextReader reader = new XmlTextReader(responseStream);
while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Text)
    {
        Console.WriteLine("{0}", reader.Value.Trim());
    }                       
    Console.ReadLine();
}
internal string Get(string uri)
{
    using (WebResponse wr = WebRequest.Create(uri).GetResponse())
    {
        using (StreamReader sr = new StreamReader(wr.GetResponseStream()))
        {
            return sr.ReadToEnd();
        }
    }
}