インスタンスの http バージョンにアクセスする公的な方法はなくNSHTTPURLResponse
、応答のバージョンは要求のバージョンに依存します。
CFNetworking
本当に http バージョンにアクセスしたい場合に使用できます。
CFN_EXPORT CFHTTPMessageRef
CFHTTPMessageCreateResponse(
CFAllocatorRef __nullable alloc,
CFIndex statusCode,
CFStringRef __nullable statusDescription,
CFStringRef httpVersion) CF_AVAILABLE(10_1, 2_0);
そして、CFHTTPMessageCopyVersion()
HTTP バージョンを返します。
実際には、HTTP 応答を作成するために-[NSHTTPURLResponse initWithURL:(NSURL *)URL statusCode:(NSInteger)statusCode HTTPVersion:(NSString *)version headerFields:(NSDictionary *)fields]
使用します。NSURLResponse.mCFHTTPMessageCreateResponse
を参照してください。
は、構造体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;
インスタンス_CFURLResponse
で getter メソッドを使用して、この構造体を取得できます。NSURLResponse
CFTypeRef test = CFBridgingRetain([response performSelector:NSSelectorFromString(@"_CFURLResponse")]);
CFShow(test);