gzip을 사용할 필요가 없습니다. 서버가 응답에 gzip 헤더를 보내는 경우 HttpWebRequest
이 자동으로이 작업을 수행합니다.
하지만 더욱 사용하여 코드를 단순화 할 수있는 WebClient :
private static string GetFile()
{
using (var client = new WebClient())
{
client.Headers[HttpRequestHeader.UserAgent] = "MOZILLA/5.0 (WINDOWS NT 6.1; WOW64) APPLEWEBKIT/537.1 (KHTML, LIKE GECKO) CHROME/21.0.1180.75 SAFARI/537.1";
client.Headers[HttpRequestHeader.Accept] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
client.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate";
var xmlFile = client.DownloadString("http://www.iddaa.com.tr/XML/IDDAAMACPROGRAMI/index.htm?iddaadrawid=12.09.2012&iddaadrawide=13.09.2012&foraccess=KSsec654");
return xmlFile;
}
}
또는 도입 된 새로운 HttpClient 클래스 .NET 4.5 : 나는 Gzip의 부분을 제거하고 일 Dimitrow
private async Task<string> GetFile()
{
using (var client = new HttpClient() { BaseAddress = new Uri("http://www.iddaa.com.tr") })
{
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("MOZILLA", "5.0"));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("(WINDOWS NT 6.1; WOW64)"));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("APPLEWEBKIT", "537.1"));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("(KHTML, LIKE GECKO)"));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("CHROME", "21.0.1180.75"));
client.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue("SAFARI", "537.1"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xhtml+xml"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml", 0.9));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*", 0.8));
client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
client.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
var result = await client.GetAsync("/XML/IDDAAMACPROGRAMI/index.htm?iddaadrawid=12.09.2012&iddaadrawide=13.09.2012&foraccess=KSsec654");
result.EnsureSuccessStatusCode();
return await result.Content.ReadAsStringAsync();
}
}
, 고맙습니다! – ozgun
@ user712847,이 답변을 통해 문제 해결에 도움이 되었다면 옆에있는 체크 표시를 클릭하여 답변으로 표시하십시오. http://meta.stackexchange.com/questions/5234/how-does-accepting- 답장 작업 –
대단히 고마워 .. 내 REST HTTP GET 요청에서 발생할 수있는 XML 오류 응답을 얻으려고했다.이 한 줄의 'return await result.Content.ReadAsStringAsync();' 위의 코드 샘플에서 내 하루를 저장했습니다! – Vinu