【问题标题】:Getting error "Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" in iOS 7在 iOS 7 中出现错误“Error Domain=com.alamofire.error.serialization.response Code=-1011“Request failed: bad request (400)”
【发布时间】:2015-08-01 12:13:21
【问题描述】:

我正在使用 AFNetworking 版本“2.5.4”并创建 multipartform-data 请求。 在我的情况下,代码在 iOS8 上运行良好,但在 iOS 7 上出现问题。出现错误

"错误域=com.alamofire.error.serialization.response Code=-1011 "请求失败:错误请求 (400)"

用户信息=0x19039c00 {com.alamofire.serialization.response.error.response= { URL:http://xxx/api/abc/PostApi } {状态码:400, 标题{ 连接=关闭; “内容类型”=“应用程序/json”; 日期 =“格林威治标准时间 2015 年 5 月 20 日星期三 05:42:47”; 服务器=阿帕奇; } }, NSErrorFailingURLKey=http://xxx/api/abc/PostApi }, NSLocalizedDescription=请求失败:错误请求 (400), com.alamofire.serialization.response.error.data=}

这是我的代码有问题

`

@property (strong, nonatomic) NSURLSessionUploadTask *postUploadTask;

__block int i=1;
            AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

    NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:urlString parameters:postParameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        if (imageArray.count > 0) {
            long dataLenght = 0.0;
            for(UIImage *eachImage in imageArray)
            {
                NSData *imageData = UIImageJPEGRepresentation(eachImage, .5);
                dataLenght = dataLenght + imageData.length;
                [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"image%d",i] fileName:[NSString stringWithFormat:@"image%d.jpg",i] mimeType:@"image/jpeg"];
                i++;
            }

        }
    } error:nil];

    NSProgress *progress = nil;
    self.postUploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
        [progress removeObserver:object forKeyPath:kProgressFractionCompleted context:kPostUpdateTypePostUpdate];
        completionBlock(responseObject, error, task);
    }];
    [self.postUploadTask resume];` 

虽然这是同一 api 上的工作代码:

     AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:BASE_URL]];

    AFHTTPRequestOperation *op = [manager POST:urlString parameters:postParameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        if (imageArray.count > 0) {
            long dataLenght = 0.0;
            for(UIImage *eachImage in imageArray)
            {
                NSData *imageData = UIImageJPEGRepresentation(eachImage, .5);
                dataLenght = dataLenght + imageData.length;
                [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"image%d",i] fileName:[NSString stringWithFormat:@"image%d.jpg",i] mimeType:@"image/jpeg"];
                i++;
            }
        }
    } success:^(AFHTTPRequestOperation *operation, id responseObject){

        completionBlock(responseObject, nil, task);

        [progress removeObserver:object forKeyPath:kProgressFractionCompleted context:kPostUpdateTypePostUpdate];

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        completionBlock(operation, error, task);

    }];
    [op start];

但我的要求是实现uploadTaskWithStreamedRequest。 这类似于问题“Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)”。

如果有任何想法,请帮助我。提前致谢。

【问题讨论】:

  • 您可以使用像 Charles 这样的代理来监控 iOS7 和 iOS8 中发送的内容,看看有什么区别。
  • @Lefteris,感谢您的建议。我检查了我的请求标头,两者都是一样的。
  • 不只是标题,还要检查帖子正文。有些东西肯定是不同的,并导致了错误的请求!
  • 我在这个链接中找到了答案。对我真的很有帮助stackoverflow.com/questions/24948561/…
  • 谢谢大家,在我的情况下有一些服务器配置问题。我的请求和响应正在另一台服务器上运行。

标签: ios afnetworking multipartform-data


【解决方案1】:

您应该尝试将请求序列化程序添加到您的 AFHTTPRequestOperationManager。

    AFJSONRequestSerializer *jsonRequestSerializer = [AFJSONRequestSerializer serializer];
    [self.requestOperationManager setRequestSerializer:jsonRequestSerializer];

【讨论】:

    猜你喜欢
    • 2014-12-04
    • 2015-11-16
    • 2013-06-05
    • 2016-11-23
    • 2015-06-02
    • 2012-01-18
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多