Nice programing

응답에서 텍스트 읽기

nicepro 2020. 11. 22. 20:34
반응형

응답에서 텍스트 읽기


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

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

WebHeaderCollection header = response.Headers;

여기서 Google은 텍스트를 반환합니다. 읽는 방법?


당신 "application/xrds+xml"이 나에게 문제를주고 있었다. 나는 0의 Content-Length (응답 없음)를 받았다.

이를 제거한 후을 사용하여 응답에 액세스 할 수 있습니다 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

private static readonly HttpClient httpClient = new HttpClient();

public static async Task<string> GetResponseText(string address)
{
    return await httpClient.GetStringAsync(address);
}

난 그냥 나 자신 것을 시도했다, 그것은 나에게 200 OK 응답,하지만 내용을 주었다 - 컨텐츠 길이가 0 당신이 있습니까되었다 확실히 그것은 당신에게 컨텐츠를주고? 어쨌든, 나는 당신이 정말로 콘텐츠를 가지고 있다고 가정 할 것입니다.

실제 텍스트를 다시 가져 오는 것은 인코딩을 아는 데 의존하며 까다로울 수 있습니다. Content-Type 헤더에 있어야하지만 파싱해야합니다.

그러나 이것이 실제로 XML 인 경우 (예 : " http://google.com/xrds/xrds.xml ") 훨씬 쉽습니다. 예를 들어 LINQ to XML을 통해 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 객체 모델로 결과를 얻는 경우 XDocument, XmlDocument또는이 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();

이 문서에서는 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;

response.GetResponseStream()응답 스트림을 반환하는 데 사용해야합니다. 그리고 잊지 마세요 객체.closeStreamResponse

참고URL : https://stackoverflow.com/questions/3273205/read-text-from-response

반응형