요청의 데이터가 gzip으로 반환되는지 Swift에서 확인할 수 있습니까? 당신이 파일의 첫 번째 4 바이트를 읽는다면
(Swift) 콘텐츠 인코딩이 gzip인지 확인하는 방법
1
A
답변
0
, 당신이 Magic Number
을 그래서 얻어야한다 : 내용 - 인코딩은 GZIP 파일을 반환하는 경우
내가 확인하는 시험 방법을 작성하려면
var magicNumber = [UInt](count: 4, repeatedValue: 0)
data.getBytes(&magicNumber, length: 4 * sizeof(UInt))
GZipped 인 경우 1f 8b의 마법 번호를 가지므로이를 확인하십시오.
3
당신은 HTTPURLResponse
의 헤더 필드에서이 정보를 얻을 수 있습니다 :이 헤더 및 데이터를 다운로드하는 것이
URLSession.shared.dataTask(with: url) { (data, response, error) in
if let response = response as? HTTPURLResponse {
if let encoding = response.allHeaderFields["Content-Encoding"] as? String {
print(encoding)
print(encoding == "gzip")
}
}
}.resume()
참고.
는 데이터 만 다운로드하지 않고 헤더를 얻고 싶다면
는, 더 나은 솔루션은 다음과 같이"HEAD"
에
URLRequest
세트를 사용하는 것입니다
var request = URLRequest(url: url)
request.httpMethod = "HEAD"
URLSession.shared.dataTask(with: request) { (_, response, _) in
if let response = response as? HTTPURLResponse {
if let enc = response.allHeaderFields["Content-Encoding"] as? String {
print(enc)
print(enc == "gzip")
}
}
}.resume()
이 방법 만 헤더가 다운로드됩니다.