1.设置请求后还有Header
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"text/plain",@"application/json",@"text/json",@"text/javascript",@"text/html",nil]]; if(type == 文件上传){ manager.requestSerializer= [AFJSONRequestSerializer serializer]; [manager.requestSerializer setValue:@"multipart/form-data" forHTTPHeaderField:@"Content-Type"]; } else { manager.requestSerializer= [AFJSONRequestSerializer serializer]; [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; } //设置Header [manager.requestSerializer setValue:xxx forHTTPHeaderField:@"Authorization"]; [manager.requestSerializer setValue:@"com.abc.xxx" forHTTPHeaderField:@"packageName"]; [manager.requestSerializer setValue:xxx forHTTPHeaderField:@"afid"]; [manager.requestSerializer setValue:xxx forHTTPHeaderField:@"appName"]; [manager.requestSerializer setValue:@"es" forHTTPHeaderField:@"lang"]; #warning 超时设置放在最后,否则抓包等其他情况,导致手动设置的超时无效,变为默认的一分钟 manager.requestSerializer.timeoutInterval = 30; // 设置超时时间为 30 秒
2.上传文件核心方法
[manager POST:url parameters:@{@"params":xxx} headers:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { //将文件转成data格式,其中name、 fileName 和mimeType 要根据实际情况填写 NSData *fileData = [NSData dataWithContentsOfFile:param[@"file"]]; [formData appendPartWithFileData:fileData name:@"file" fileName:@"file.zip" mimeType:@"file"]; } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }];