한글이 아니고, 영문임에도 WebResponse의 데이터가 깨져서 들어오는 경우가 종종있다. Fiddler 와 같은 웹 프록시툴을 켜둔 상태일 때는 잘 들어오는 것으로 보아, 헤더상의 문제는 아닌 것을 알 수 있다. 

원인은 압축된 채로 데이터가 전달되어 나타나는 현상이다.

대개 웹 응답데이터는 gzip 압축 상태로 전달되며 브라우저는 자동으로 이를 해제하여 렌더링하기 때문에 느끼지 못하지만, 코딩 환경에서는 엄격하게 구분 할 필요가 있다. 상대방의 서버 응답에 따라서 자동으로 처리해주기도 한다.


예)

HttpWebRequest u = new HttpWebRequest.CreateHttp("http://~~~");

u.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;



WebRequest(혹은 HttpWebRequest)를 이용해서 페이지를 요청했을 때 301 코드로 인해 다른 페이지로 리다이렉트되는 경우, WebResponse 찍어보면 최종 리다이렉트 된 페이지의 내용이 나타난다. 

리다이렉트 이전에 나타나는 페이지 내용이나 헤더 값을 가져와야 하는 상황이라면 난감할텐데, 

HttpWebRequest.AllowAutoRedirect 속성을 false 로 설정하면 리다이렉트가 되는 것을 방지한다.


예)

HttpWebRequest u = new HttpWebRequest.CreateHttp("http://~~~");

u.AllowAutoRedirect = false;


+ Recent posts