您不需要使用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:
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();
}
}
Dimitrow我删除Gzip已组成部分,它的工作, 谢谢! – ozgun
@ user712847,如果此答案帮助您解决了您遇到的问题,请考虑将其标记为答案,方法是单击旁边的勾号:http://meta.stackexchange.com/questions/5234/how-does-accepting- an-answer-work –
非常感谢。我期待找回可能发生在我的REST HTTP GET请求上的XML错误响应......并且这一行'return await result.Content.ReadAsStringAsync();'从你上面的代码示例中,拯救了我的一天! – Vinu