[펌] Gzip 압축 풀어서 네이버 검색 응답받기

seung-jae hwang·2019년 3월 15일
0

HTTP

목록 보기
1/2

From :

인코딩이 다르다고 생각하여 다른 인코딩으로 아무리 해보아도 제대로 나오지 않는다.
이럴 땐 HttpClientHandler를 이용하여 gzip의 압축을 풀어주면 된다.
HttpClientHandler의 AutomaticDecompression 속성을
System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate으로
설정해 주면 된다.

AutomaticDecompression 속성의 설명이다.
Gets or sets the type of decompression method used by the handler for automatic decompression of the HTTP content response.
HTTP 콘텐츠 응답을 자동으로 압축 해제하기 위해 처리기에서 사용하는 압축 해제 메서드의 형식을 가져오거나 설정합니다.

처리기를 HttpClient에 담아 초기화 시키고 응답을 받으면

잘~~ 디컴프레션 되었다. 아래는 전체 코드이다. Winform 프로젝트로 만들었고 몇 줄 안된다.

using System;
using System.Net.Http;
using System.Text;
using System.Windows.Forms;

private async void button1_Click(object sender, EventArgs e)
{

var enc = Encoding.UTF8;
var 검색어오리지날 = enc.GetBytes("지포라이터");
var 검색어 = "";     
HttpClientHandler handler = new HttpClientHandler()
{
    AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate
};
foreach (byte 바이트 in 검색어오리지날)
{
    검색어 += $"%{바이트:X}";
}
using (var client = new HttpClient(handler))
{
    client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
    var 응답 = await client.GetAsync($"https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query={검색어}");
    var 응답문자열 = await 응답.Content.ReadAsStringAsync();
}

}

0개의 댓글