【问题标题】:AFNetworking 2.0. - multipart-formdata request not successfulAFNetworking 2.0。 - multipart-formdata 请求不成功
【发布时间】:2016-08-10 11:32:17
【问题描述】:

我正在使用 AFNetworking 2.0。向服务器发出带有 multipart-formdata 的 post 请求。我正在尝试上传视频和图像以及 3 个字符串参数。

这适用于 POSTMAN 客户端,但不适用于应用程序。

这是不工作的确切代码。

    UIImage *image = img;
    NSData *imageData = UIImagePNGRepresentation(image);

    NSURL *urlVideo = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SampleVideo_1280x720_1mb" ofType:@"mp4"]];
    NSData *videoData = [NSData dataWithContentsOfURL:urlVideo];

    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:requestURl]];              
    manager.responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
    manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObjectsFromArray:@[@"application/json",@"text/html"]];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    [manager POST:@"POST" parameters:value constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

        [formData appendPartWithFileData:imageData name:@"buzzymain_image" fileName:@"photo" mimeType:@"image/png"];            
        [formData appendPartWithFileData:videoData name:@"buzzymain" fileName:@"video" mimeType:@"video/mp4"];            
        [formData appendPartWithFormData:[[value valueForKey:@"buzzymain_category"] dataUsingEncoding:NSUTF8StringEncoding] name:@"buzzymain_category"];
        [formData appendPartWithFormData:[[value valueForKey:@"buzzymain_title"] dataUsingEncoding:NSUTF8StringEncoding] name:@"buzzymain_title"];
        [formData appendPartWithFormData:[[value valueForKey:@"buzzyuser_id"] dataUsingEncoding:NSUTF8StringEncoding] name:@"buzzyuser_id"];

    } success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {                   
        NSString *json = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
        NSLog(@"-------\n");
        NSLog(@"%@", json);
        NSLog(@"-------\n");

    } failure:^(AFHTTPRequestOperation * _Nullable operation, NSError * _Nonnull error) {
        {
            //Something wrong
        }
    }];

代码错误:

{"status":"0","message":"请输入用户ID。"}

POSTMAN 的成功:

{"status":"1","message":"操作成功执行。"}

附:上面代码中的“value”是一个NSDictionary。

请指出我哪里出错了?

【问题讨论】:

  • 您好,为了确定,值确实包含与键 Buzzyuser_id 关联的有效 user_id(没有错字,没有大写)?
  • “值”包含“buzzyuser_id”?
  • @FlorianBurel,谢谢,但是没有类型或任何其他情况,我已经检查了很多次。在邮递员中,它可以使用相同的参数正常工作。
  • @EktaMakadiya,是的,它包含它。我已经检查过它是否包含所有需要的参数。
  • @Hemang 请检查我的答案。

标签: ios objective-c multipartform-data afnetworking-2


【解决方案1】:

编辑:

[formData appendPartWithFormData:[[NSMutableData alloc] initWithData:[[NSString stringWithFormat:@"buzzymain_category"] dataUsingEncoding:NSUTF8StringEncoding]] name:@"buzzymain_category"];
[formData appendPartWithFormData:[[NSMutableData alloc] initWithData:[[NSString stringWithFormat:@"buzzymain_title"] dataUsingEncoding:NSUTF8StringEncoding]] name:@"buzzymain_title"];
 [formData appendPartWithFormData:[[NSMutableData alloc] initWithData:[[NSString stringWithFormat:@"buzzyuser_id"] dataUsingEncoding:NSUTF8StringEncoding]] name:@"buzzyuser_id"];

【讨论】:

  • 你添加了 NSJSONReadingAllowFragments 吗?
  • 是的,请尝试添加并运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多