Подтвердить что ты не робот

Самый простой способ прочитать ответ от WebResponse

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
    }
}

Теперь, имея объект webResponse, какой самый простой способ прочитать его содержимое?

4b9b3361

Ответ 1

Я просто использовал бы методы async на WebClient - гораздо проще работать с:

        WebClient client = new WebClient();
        client.DownloadStringCompleted += (sender,args) => {
            if(!args.Cancelled && args.Error == null) {
                string result = args.Result; // do something fun...
            }
        };
        client.DownloadStringAsync(new Uri("http://foo.com/bar"));

Но ответить на вопрос; предполагая, что это текст, что-то вроде (отметив, что вам может потребоваться указать кодировку):

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

Ответ 2

Вот один из способов сделать это, если ответ приходит из XML.

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();
}

Ответ 3

internal string Get(string uri)
{
    using (WebResponse wr = WebRequest.Create(uri).GetResponse())
    {
        using (StreamReader sr = new StreamReader(wr.GetResponseStream()))
        {
            return sr.ReadToEnd();
        }
    }
}