응답 버전은 NSHTTPURLResponse
인스턴스의 http 버전에 액세스 할 수있는 공개 된 방법이 없으며 요청 버전에 따라 응답 버전이 달라집니다.
http 버전에 실제로 액세스하려면 CFNetworking
을 사용할 수 있습니다.
CFN_EXPORT CFHTTPMessageRef
CFHTTPMessageCreateResponse(
CFAllocatorRef __nullable alloc,
CFIndex statusCode,
CFStringRef __nullable statusDescription,
CFStringRef httpVersion) CF_AVAILABLE(10_1, 2_0);
그리고 CFHTTPMessageCopyVersion()
은 HTTP 버전을 반환합니다.
실제로 -[NSHTTPURLResponse initWithURL:(NSURL *)URL statusCode:(NSInteger)statusCode HTTPVersion:(NSString *)version headerFields:(NSDictionary *)fields]
은 CFHTTPMessageCreateResponse
을 사용하여 HTTP 응답을 만듭니다. NSURLResponse.m
NSURLResponse
은 _CFURLResponse
구조체를 바탕으로합니다.
typedef struct _CFURLResponse {
CFRuntimeBase _base;
CFAbsoluteTime creationTime;
CFURLRef url;
CFStringRef mimeType;
int64_t expectedLength;
CFStringRef textEncoding;
CFIndex statusCode;
CFStringRef httpVersion;
CFDictionaryRef headerFields;
Boolean isHTTPResponse;
OSSpinLock parsedHeadersLock;
ParsedHeaders* parsedHeaders;
} _CFURLResponse;
typedef const struct _CFURLResponse* CFURLResponseRef;
당신은 NSURLResponse
인스턴스 _CFURLResponse
getter 메소드를 사용하여이 구조체를 얻을 수 있습니다 :
CFTypeRef test = CFBridgingRetain([response performSelector:NSSelectorFromString(@"_CFURLResponse")]);
CFShow(test);