.NET 용 핵심 사항은 좀 더 복잡합니다.
var req = WebRequest.CreateHttp(uri);
/*
* Headers
*/
req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
/*
* Execute
*/
try
{
using (var resp = await req.GetResponseAsync())
{
using (var str = resp.GetResponseStream())
using (var gsr = new GZipStream(str, CompressionMode.Decompress))
using (var sr = new StreamReader(gsr))
{
string s = await sr.ReadToEndAsync();
}
}
}
catch (WebException ex)
{
using (HttpWebResponse response = (HttpWebResponse)ex.Response)
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
string respStr = sr.ReadToEnd();
int statusCode = (int)response.StatusCode;
string errorMsh = $"Request ({url}) failed ({statusCode}) on, with error: {respStr}";
}
}
}
나는 릭 Strahl 잘못해야 추측 다음
GET
예를 살펴AutomaticCompression
에 대한 (작성 등) 속성이없는 같이GZipStream
이 필요하다. 너 혼자 해봤 니? – Keltex감사합니다. 단지 일을 이해하려고 노력하고 있습니다. 이것이 맞는지 말해 줄 수 있습니까? (a)이 "AcceptEncoding"줄을 추가하지 않으면 - 압축되지 않은 파일 =>을 다운로드하는 경우 FINE - 압축 파일을 다운로드하는 경우 => 문제 (파일을 다운로드하지만 손상된 것처럼 보임) 압축되지 않은 파일) (b)이 "AcceptEncoding"줄을 추가하는 경우 : - 압축되지 않은 파일을 다운로드하는 경우 => 여전히 작동 함 FINE - 압축 파일을 다운로드 한 경우 => 정상적으로 작동합니다. 압축되지 않음) 맞습니까? – Greg
@Greg 아무 옵션도 없습니다. 두 번째 줄은 이미 압축 된 파일 (예 : zip 파일)을 다운로드하는 것이 아니라 필요할 때 압축 될 수있는 웹 리소스 (예 : html 파일)를 다운로드하는 방법입니다. 두 번째 줄을 입력하지 않으면 잘 작동하는 웹 서버가 압축 파일을 전혀 보내지 않습니다. 웹 서버에 파일 압축 기능이있는 경우 두 번째 줄을 입력해야만 파일이 압축됩니다. –