iOS

最近更新时间:2023-11-21 09:49:42

我的收藏
以下是 iOS 客户端创建 QUIC 请求代码示例,详细 API 说明可参考:iOS API 文档

创建 Get 请求

// Session配置
TQUICURLSessionConfiguration *quicSessionConfiguration = [TQUICURLSessionConfiguration defaultConfiguration];
// 拥塞控制算法
quicSessionConfiguration.congestionType = TQUICCongestionTypeBBR;
// 连接超时时间
quicSessionConfiguration.connectTimeoutMillis = 6 * 1000;
// 创建SessionManager,使用说明参考API文档
TQUICHTTPSessionManager *quicSessionManager = [[TQUICHTTPSessionManager alloc] initWithSessionConfiguration:quicSessionConfiguration];
//(可选)通过TQUICHTTPRequestSerializer/TQUICHTTPResponseSerializer配置序列化,使用说明参考API文档

// 发起GET请求
[quicSessionManager GET:@"url"
parameters:nil
headers:nil
timeoutInterval:0
downloadProgress:nil
success:^(TQUICURLSessionTask * _Nonnull task, id _Nullable responseObject) {
// 请求执行成功,获取响应数据
// 获取 Headers,由于是 HTTP 协议,因此这里 response 可以强转为 NSHTTPURLResponse
NSDictionary *headers = [(NSHTTPURLResponse *)task.response allHeaderFields];
// 获取 Body
id body = responseObject;
} failure:^(TQUICURLSessionTask * _Nullable task, NSError * _Nonnull error) {
// 请求执行失败,获取错误信息
NSInteger errorCode = error.code;
}];

创建 Post 请求

// Session配置
TQUICURLSessionConfiguration *quicSessionConfiguration = [TQUICURLSessionConfiguration defaultConfiguration];
// 拥塞控制算法
quicSessionConfiguration.congestionType = TQUICCongestionTypeBBR;
// 连接超时时间
quicSessionConfiguration.connectTimeoutMillis = 6 * 1000;
// 创建SessionManager,使用说明参考API文档
TQUICHTTPSessionManager *quicSessionManager = [[TQUICHTTPSessionManager alloc] initWithSessionConfiguration:quicSessionConfiguration];
//(可选)通过TQUICHTTPRequestSerializer/TQUICHTTPResponseSerializer配置序列化,使用说明参考API文档

//构造body数据
NSData *bodyData;
//发起Post请求
[quicSessionManager POST:@"url"
body:bodyData
headers:nil
timeoutInterval:timeInterval
uploadProgress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(TQUICURLSessionTask * _Nonnull task, id  _Nullable responseObject) {
// 请求执行成功,获取响应数据
// 获取 Body
id body = responseObject;

    } failure:^(TQUICURLSessionTask * _Nullable task, NSError * _Nonnull error) {
// 请求执行失败,获取错误信息
NSInteger errorCode = error.code;
}];

取消请求

// 创建SessionManager

...
//使用SessionDataTask发起请求,使用说明见API文档
TQUICURLSessionDataTask *dataTask =
[quicSessionManager dataTaskWithRequest:request
                   uploadProgress:nil
                       downloadProgress:nil
                  completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {

//请求完成回调

}];

//发起请求
[dataTask resume];

//取消请求
[dataTask cancel];