之前项目一直用thrift。
现在改成http, 为啥没有用https,后台说他们在后台已经加密了。
用AFHTTPSessionManager中的这个方法
- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block progress:(nullable void (^)(NSProgress * _Nonnull))uploadProgress success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure;
tokenId可以作为参数放到parameters
然后注意file字段:这个file 就是
[formData appendPartWithFileData:file[@"buff"] name:@"file" fileName:file[@"name"] mimeType:@"image/*"];
name的值。之前没搞懂。
[[WLFNetWorkManager shared] POST:FILE_UPLOAD_URL parameters:@{@"tokenId":tokenId} constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { [formData appendPartWithFileData:file[@"buff"] name:@"file" fileName:file[@"name"] mimeType:@"image/*"]; } progress:^(NSProgress * _Nonnull uploadProgress) { //NSLog(@"uploadProgress = %@",uploadProgress); } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *json = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]; NSDictionary *retDict = [[WLFDataTransformTool shareInstance] dictionaryWithJsonString:json]; complete(retDict); /* { code = 1; data = { fileId = 114587; fileSize = 5081851; fileUrl = "/11/2020/3/18/5c4e397d-13e8-4b05-bc18-3a093ca28dc6.jpg"; }; msg = "文件上传成功"; } */ } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { faildBlock(error); }];
这里也顺便记录一下thrift的使用步骤。
后台边写好了thrift文件之后,然后在thrift/ 同级目录下运行命令:
thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen cocoa udc_all.thrift
生成
udc_all.h
udc_all.m
两个OC文件。这两个文件中就是相关接口,直接调用就可以了。另外一些模型啊,返回码,状态码。都在thrift/文件中定义了,不用自己写。
如果想生成其他语言接口文件,可以试试如下命令。
#thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen swift udc_all.thrift #thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen cpp udc_all_cpp.thrift #thrift -out /Users/udc/Desktop/thrift_interface -I ./ --gen js udc_all_js.thrift