iOS
API概览
API | 描述 |
会话管理接口 | |
QUIC 请求配置信息 | |
请求任务管理接口 | |
请求数据序列化接口 | |
响应数据序列化接口 |
TQUICHTTPSessionManager
API | 描述 |
静态方法,构造 TQUICHTTPSessionManager | |
根据 Url 构造 TQUICHTTPSessionManager 实例 | |
发起 GET 请求 | |
发起 POST 请求 |
manger
构造 TQUICHTTPSessionManager,使用默认 QUIC 配置
+ (instancetype)manager
initWithSessionConfiguration
创建
TQUICHTTPSessionManager
实例,并传入 QUIC 配置信息
参数 | 描述 |
configuration |
initWithBaseURL
创建
TQUICHTTPSessionManager
实例,并传入url,配置请求参数在此 url 为基础上添加- (instancetype)initWithBaseURL:(nullable NSURL *)baseURL;- (instancetype)initWithBaseURL:(nullable NSURL *)baseURL
参数 | 描述 |
baseURL | 请求域名 |
configuration |
GET
创建 GET 请求
- (nullable TQUICURLSessionDataTask *)GET:(NSString *)URLStringparameters:(nullable id)parametersheaders:(nullable NSDictionary <NSString *, NSString *> *)headerstimeoutInterval:(NSTimeInterval)timeoutInterval
参数 | 描述 |
URLString | 请求 Url |
parameters | 请求参数 |
headers | 请求 Header 信息 |
timeoutInterval | 连接超时时间 |
downloadProgress | 下载进度回调 |
success | 请求成功回调 |
failure | 请求失败回调 |
POST
创建 POST 请求
- (nullable TQUICURLSessionDataTask *)POST:(NSString *)URLStringparameters:(nullable id)parametersheaders:(nullable NSDictionary <NSString *, NSString *> *)headerstimeoutInterval:(NSTimeInterval)timeoutInterval
参数 | 描述 |
URLString | 请求 Url |
parameters | 请求参数 |
headers | 请求 Header 信息 |
timeoutInterval | 连接超时时间 |
uploadProgress | 上传进度回调 |
success | 请求成功回调 |
failure | 请求失败回调 |
TQUICURLSessionTaskSuccess
任务执行成功回调 block
参数 | 描述 |
task | 请求任务 |
responseObject | 响应数据 |
TQUICURLSessionTaskFailure
任务执行失败回调 block
参数 | 描述 |
task | 请求任务 |
error | 错误信息 |
TQUICURLSessionManager
会话管理接口
API | 描述 |
根据配置构造实例 | |
使用指定 NSURLRequest 参数发起请求 | |
配置请求完成后的数据统计回调 | |
设置接收响应结果回调 block |
initWithSessionConfiguration
创建 TQUICURLSessionManager 实例,并传入 QUIC 配置信息
参数 | 描述 |
configuration | QUIC请求配置 |
dataTaskWithRequest
使用指定 NSURLRequest 参数发起请求
- (TQUICURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
参数 | 描述 |
request | 请求配置,参考系统 NSURLRequest |
uploadProgress | 上传进度回调 |
downloadProgress | 下载进度回调 |
completionHandler | 请求完成回调 |
setTaskDidFinishCollectingMetricsBlock
配置请求完成后的数据统计回调
- (void)setTaskDidFinishCollectingMetricsBlock:(nullable TQUICURLSessionTaskDidFinishCollectingMetricsBlock)block
参数 | 描述 |
block | 请求完成数据统计回调 |
setTaskDidReceiveResponseBlock
设置接收响应结果回调 block
参数 | 描述 |
block | 接收到响应结果后的回调 block |
TQUICURLSessionTaskDidReceiveResponseBlock
会话任务收到响应结果回调 block
typedef void (^TQUICURLSessionTaskDidReceiveResponseBlock)(TQUICURLSession *session, TQUICURLSessionTask *task, NSURLResponse *response)
参数 | 描述 |
session | 会话管理类 |
task | 任务管理类 |
response | 响应结果 |
TQUICURLSessionTaskDownloadProgressBlock
下载进度回调 block
typedef void (^TQUICURLSessionTaskDownloadProgressBlock)(NSProgress *downloadProgress)
参数 | 描述 |
downloadProgress | 下载进度 |
TQUICURLSessionTaskUploadProgressBlock
上传进度回调 block
typedef void (^TQUICURLSessionTaskUploadProgressBlock)(NSProgress *uploadProgress)
参数 | 描述 |
uploadProgress | 上传进度 |
QUICURLSessionTaskCompletionHandler
会话执行完成回调 block
typedef void (^TQUICURLSessionTaskCompletionHandler)(NSURLResponse *response, id responseObject, NSError *error)
参数 | 描述 |
response | 响应结果,参考系统 NSURLResponse |
responseObject | 响应数据 |
error | 错误信息 |
TQUICURLSessionTaskDidFinishCollectingMetricsBlock
会话执行完成数据统计回调 block
typedef void (^TQUICURLSessionTaskDidFinishCollectingMetricsBlock)(TQUICURLSession *session, TQUICURLSessionTask *task, TQUICURLSessionTaskMetrics * _Nullable metrics)
参数 | 描述 |
session | 请求会话管理 |
task | 请求任务管理 |
metrics | 网络状态统计 |
TQUICURLSessionConfiguration
QUIC 请求参数配置
成员变量 | 描述 |
quicVersion | 设置QUIC版本号
支持的版本:Q043、Q046、Q050、Q051、draft-29、RFC-V1(RFC 9000)
取值: TQUICVersionQ043 (默认值) TQUICVersion046 TQUICVersion050 TQUICVersion051 TQUICVersionDraft29 TQUICVersionRFCV1 |
congestionType | 支持的拥塞算法(CubicBytes、RenoBytes,、BBR、PCC、GCC) 取值: TQUICCongestionTypeBBR(默认值) TQUICCongestionTypeCubicBytes TQUICCongestionTypeRenoBytes TQUICCongestionTypePCC TQUICCongestionTypeGCC |
connectTimeoutMillis | 连接超时时间,单位:毫秒
默认值:60000 |
idleTimeoutMillis | 空闲连接超时时间,影响连接复用,单位:毫秒
默认值:90000 |
ipv6Enabled | 是否支持IPv6,可选 YES 或者 NO
默认值:NO |
dnsParser | 自定义 DNS 解析代理,参考:TQUICDNSParserDelegate |
TQUICDNSParserDelegate
DNS 解析代理,可实现自定义 DNS 解析
- (NSString *)lookup:(NSString *)hostName
参数 | 描述 |
hostName | 域名,在请求过程中会回调域名,需要返回解析到的 IP 地址 |
TQUICURLSession
请求任务管理接口
API | 描述 |
根据配置创建实例 | |
根据默认配置创建实例,单例 | |
根据request参数创建请求任务 |
sessionWithConfiguration
根据配置创建实例
参数 | 描述 |
configuration | 配置信息 |
sharedSession
根据默认配置创建实例,单例
+ (instancetype)sharedSession
dataTaskWithRequest
根据 request 参数创建请求任务
参数 | 描述 |
request | 请求参数,参考系统 NSURLRequest |
TQUICURLSessionTask
求任务管理接口
resume
开始请求
- (void)resume
cancel
取消请求
- (void)cancel
TQUICURLSessionDataTask
resume
开始请求
- (void)resume
cancel
取消请求
- (void)cancel
TQUICURLRequestSerialization
API | 描述 |
http 请求参数序列化 | |
JSON 请求参数序列化 |
TQUICHTTPRequestSerializer
请求数据序列化接口
API | 描述 |
实例化 | |
设置 Header 值 | |
根据 Header 字段返回对应的值 | |
创建 NSMutableURLRequest | |
创建 NSMutableURLRequest,用于传输流式数据 |
serializer
构造 TQUICHTTPRequestSerializer 实例
+ (instancetype)serializer
setValue
设置 Header 值
- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field
参数 | 描述 |
value | Header 值 |
field | Header 字段 |
valueForHTTPHeaderField
根据 Header 字段返回对应的值
- (nullable NSString *)valueForHTTPHeaderField:(NSString *)field
参数 | 描述 |
field | Header 字段 |
requestWithMethod
创建 NSMutableURLRequest
- (nullable NSMutableURLRequest *)requestWithMethod:(NSString *)methodURLString:(NSString *)URLStringparameters:(nullable id)parameterserror:(NSError * _Nullable __autoreleasing *)error
参数 | 描述 |
method | 设置请求方法,get、post、put、delete、head、patch 等 http 标准支持的方法 |
URLString | 请求 Url |
parameters | 请求参数 |
error | 错误信息,NSError |
multipartFormRequestWithMethod
- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)methodURLString:(NSString *)URLStringparameters:(nullable NSDictionary <NSString *, id> *)parameterserror:(NSError * _Nullable __autoreleasing *)error
参数 | 描述 |
method | 设置请求方法,get、post、put、delete、head、patch 等 http 标准支持的方法 |
URLString | 请求 Url |
parameters | 请求参数 |
constructingBodyWithBlock | 使用 Block 方式构建 body 内容 |
error | 错误信息,NSError |
TQUICJSONRequestSerializer
API | 描述 |
创建实例 |
serializerWithWritingOptions
根据 JSON 序列化选项创建 TQUICJSONRequestSerializer 实例
+ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions
参数 | 描述 |
writingOptions | 根据 JSON 序列化选项创建实例,参考系统 NSJSONWritingOptions |
TQUICMultipartFormData
多分块表单数据上传
API | 描述 |
通过配置文件路径上传表单数据 | |
通过输入流上传表单数据 | |
分块上传表单数据 | |
添加数据分块 | |
把 Headers 和数据内容添加到表单 | |
上传带宽限制 |
appendPartWithFileURL
通过指定文件路径上传表单数据
- (BOOL)appendPartWithFileURL:(NSURL *)fileURLname:(NSString *)nameerror:(NSError * _Nullable __autoreleasing *)error
参数 | 描述 |
fileURL | 添加到表单的文件路径 |
name | 关联文件名称 |
error | 错误信息返回 |
appendPartWithInputStream
通过指定输入流上传数据
- (void)appendPartWithInputStream:(nullable NSInputStream *)inputStreamname:(NSString *)namefileName:(NSString *)fileNamelength:(int64_t)lengthmimeType:(NSString *)mimeType
参数 | 描述 |
inputStream | 输入流 |
name | 关联输入流的名称 |
fileName | 关联输入流文件名 |
length | 流数据长度(单位 bytes ) |
mimeType | MIME Type(例如:image/jpeg,详细参考 HTTP 协议标准) |
appendPartWithFileData
分块上传表单数据
- (void)appendPartWithFileData:(NSData *)dataname:(NSString *)namefileName:(NSString *)fileNamemimeType:(NSString *)mimeType
参数 | 描述 |
data | 添加到表单的数据 |
name | 关联数据的名称 |
fileName | 关联数据文件名 |
mimeType | MIME Type(例如:image/jpeg,详细参考 HTTP 协议标准) |
appendPartWithFormData
添加数据块
- (void)appendPartWithFormData:(NSData *)dataname:(NSString *)name
参数 | 描述 |
data | 添加到表单的数据 |
name | 关联数据名称 |
appendPartWithHeaders
把 Headers 和数据内容添加到表单
- (void)appendPartWithHeaders:(nullable NSDictionary <NSString *, NSString *> *)headersbody:(NSData *)body;
参数 | 描述 |
headers | 要添加 headers 内容 |
body | 添加到表单的数据 |
throttleBandwidthWithPacketSize
上传带宽限制
- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytesdelay:(NSTimeInterval)delay
参数 | 描述 |
numberOfBytes | 数据包最大值(单位:bytes,默认值:16kb) |
delay | 数据包读取时延(默认值:0) |
TQUICURLResponseSerialization
响应数据序列化接口
API | 描述 |
http 响应数据序列化 | |
JSON 响应数据序列化 |
TQUICHTTPResponseSerializer
响应数据序列化接口
API | 描述 |
实例化 | |
检查响应数据是否合法 |
serializer
构造 TQUICHTTPResponseSerializer 实例
+ (instancetype)serializer
validateResponse
检查响应数据是否合法
- (BOOL)validateResponse:(nullable NSHTTPURLResponse *)responsedata:(nullable NSData *)dataerror:(NSError * _Nullable __autoreleasing *)error
参数 | 描述 |
response | 要校验的返回结果,详见:NSHTTPURLResponse |
data | 返回的数据 |
error | 校验过程出错信息 |
TQUICJSONResponseSerializer
API | 描述 |
创建实例 |
serializerWithWritingOptions
根据 JSON 序列化选项创建 TQUICJSONResponseSerializer 实例
+ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions
参数 | 描述 |
serializerWithReadingOptions | 根据 JSON 序列化选项创建实例,参考系统 NSJSONReadingOptions |
TQUICURLSessionTaskMetrics
QUIC 网络状态统计,一次会话统计
属性 | 描述 |
transactionMetrics | |
taskInterval | 任务耗时,从任务创建到执行完成的时间间隔 |
redirectCount | 重定向次数 |
TQUICURLSessionTaskTransactionMetrics
QUIC 网络状态统计,一次请求统计
属性 | 描述 |
isValid | 状态值是否有效 |
isQuic | 是否 QUIC 请求 |
is0rtt | 是否为 0-RTT 连接 |
isConnReuse | 是否为连接复用 |
connectMillis | 获取连接耗时,单位:毫秒 |
dnsMillis | 获取 dns 耗时,单位:毫秒 |
dnsCode | 获取 dns 错误码 |
ttfbMillis | 获取首包耗时,单位:毫秒 |
completeMillis | 获取请求完成时间(不含连接耗时),单位:毫秒 |
srttMicros | 获取滑动平均rtt,单位:毫秒 |
packetsSent | 获取发包量,单位:byte |
packetsRetransmitted | 获取重传包量,单位:byte |
bytesSent | 获取发送字节数,单位:byte |
bytesRetransmitted | 获取重传字节数,单位:byte |
packetsLost | 获取丢包量,单位:byte |
packetsReceived | 获取收包量,单位:byte |
bytesReceived | 获取收到字节数,单位:byte |
streamBytesReceived | 获取stream层收到的字节数,单位:byte |
- API概览
- TQUICHTTPSessionManager
- TQUICURLSessionManager
- TQUICURLSessionTaskDidReceiveResponseBlock
- TQUICURLSessionTaskDownloadProgressBlock
- TQUICURLSessionTaskUploadProgressBlock
- QUICURLSessionTaskCompletionHandler
- TQUICURLSessionTaskDidFinishCollectingMetricsBlock
- TQUICURLSessionConfiguration
- TQUICURLSession
- TQUICURLSessionTask
- TQUICURLSessionDataTask
- TQUICURLRequestSerialization
- TQUICMultipartFormData
- TQUICURLResponseSerialization
- TQUICURLSessionTaskMetrics