无法使用 Afnetworking 在 SignUp POST 请求中保存图片

扎希尔·乌丁·巴巴尔

我正在尝试使用 AFNetworking 在带有 Multiparts 的服务器上上传图片。我试图在没有 Image 的情况下发出一个简单的 POST 请求,它工作正常。现在,可以说服务 URL 绝对没问题,服务器没有问题,我可以看到保存在文档目录中的图像 URL 也很好,所有其他参数也很好,因为它们都在处理简单的请求. 谁能在我的代码中找到一些错误?我的代码是:

 (void)uploadPicture:(NSMutableDictionary *)param
 {


NSString *string=[NSString stringWithFormat:@"%@%@",base_url,@"register"];
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:string parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileURL:[NSURL fileURLWithPath:getImagePath] name:@"picture" fileName:getImagePath mimeType:@"image/jpeg" error:nil];
} error:nil];

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setStringEncoding:NSUTF8StringEncoding];


NSURLSessionUploadTask *uploadTask;
uploadTask = [manager
              uploadTaskWithStreamedRequest:request
              progress:^(NSProgress * _Nonnull uploadProgress) {
                  // This is not called back on the main queue.
                  // You are responsible for dispatching to the main queue for UI updates
                  dispatch_async(dispatch_get_main_queue(), ^{
                      //Update the progress view

                  });
              }
              completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
                  if (error) {

                      NSLog(@"Error: %@", error);
                  } else {
                      NSLog(@"%@ %@", response, responseObject);
                      NSDictionary *dict= [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
                      NSDictionary *dic=responseObject;
                      NSLog(@"");
                  }
              }];

[uploadTask resume];

}
KKRocks

试试这个功能:

第一个解决方案

注意:您需要根据需要自定义

-(void)getResponeseWithURL:(NSString *)url WithParameter:(NSDictionary *)parameter WithImage:(UIImage *)image ImageArray:(NSMutableArray *)arrImage WithImageParameterName:(NSString *)imagename WithCallback:(void(^)(BOOL success, id responseObject))callback {
        NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:[NSString stringWithFormat:@"%@%@",BASEURL,url] parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            if (image) {
                [formData appendPartWithFileData:UIImageJPEGRepresentation(image, 0.8) name:imagename fileName:@"Image.jpg" mimeType:@"image/jpeg"];
            }
            else if (arrImage){
                int i = 1;
                for (UIImage *recipeimage in arrImage) {
                    // this condition for maintain server side coloum format : ex name , name_2 , name_3
                    [formData appendPartWithFileData:UIImageJPEGRepresentation(recipeimage, 0.8) name:i == 1 ? imagename : [NSString stringWithFormat:@"%@_%d",imagename,i] fileName:@"Image.jpg" mimeType:@"image/jpeg"];
                    i++;
                }
            }

        }error:nil];

        AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

        manager.responseSerializer = [AFJSONResponseSerializer serializer];

        NSURLSessionUploadTask *uploadTask;
        uploadTask = [manager
                      uploadTaskWithStreamedRequest:request
                      progress:^(NSProgress * _Nonnull uploadProgress) {
                          dispatch_async(dispatch_get_main_queue(), ^{
                          });
                      }
                      completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
                          if (error) {
                              [UtilityClass showAlertWithMessage: @"Please try again" andWithTitle:@"Network Error" WithAlertStyle:AFAlertStyleFailure];

                              NSLog(@"Error: %@", [[NSString alloc]initWithData:[[error valueForKey:@"userInfo"] valueForKey:@"com.alamofire.serialization.response.error.data"] encoding:NSUTF8StringEncoding]);

                              [UtilityClass removeActivityIndicator];
                              callback(NO,nil);

                          } else {
                              callback(YES,responseObject);
                          }
                      }];

        [uploadTask resume];

}

第二

可能您忘记在项目 plist 文件中添加 ATS,因此您需要添加这个 .

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用NSURLSession复制AFNetworking POST请求

来自分类Dev

AFNetworking 2.0的POST请求-AFHTTPSessionManager

来自分类Dev

AFNetworking 2.0的POST请求-AFHTTPSessionManager

来自分类Dev

无法保存AFNetworking responseObject

来自分类Dev

找不到页面(404)请求方法:POST请求URL:http://127.0.0.1:8000/accounts/signup/signup

来自分类Dev

AFNetworking 2.0 POST请求存在问题

来自分类Dev

如何通过AFNetworking发送HTTP POST请求?

来自分类Dev

AFNetworking:创建POST请求,但不运行

来自分类Dev

AFNetworking发送JSON作为POST请求的参数

来自分类Dev

如何使用AFNetworking查看JSON POST的错误?

来自分类Dev

AFNetworking + AFHTTPRequestOperation无法保存数组

来自分类Dev

如何使用AFNetworking 2.5发送XML PUT / POST请求

来自分类Dev

AFNetworking无法在GET请求上创建请求

来自分类Dev

Node.js bodyparser无法准备AFNetworking POST数组

来自分类Dev

Node.js bodyparser无法准备AFNetworking POST数组

来自分类Dev

如何在POST请求的AFNetworking 4.0中添加标题?

来自分类Dev

AFNetworking 2.0 POST问题

来自分类Dev

在AFNetworking中使用URL参数和JSON正文进行POST

来自分类Dev

避免使用AFNetworking重复HTTP请求

来自分类Dev

使用AFNetworking进行多部分PUT请求

来自分类Dev

如何使用AFNetworking 2设置HTTP请求?

来自分类Dev

如何使用AFNetworking添加请求标头?

来自分类Dev

使用AFNetworking从数据库请求

来自分类Dev

如何使用AFNetworking添加请求标头?

来自分类Dev

POST request with AFNetworking 2.0 - AFHTTPSessionManager

来自分类Dev

如何从AFNETWORKING POST获取参数

来自分类Dev

AFNetworking 2.0 HTTP POST进度

来自分类Dev

AFNetworking POST method with nested NSDictionary

来自分类Dev

AFNetworking 2.0 HTTP POST进度

Related 相关文章

热门标签

归档