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);