2015-05-20 95 views
1

我使用AFNetworking版 「2.5.4」 和創建multipartform數據請求。 在我的情況的代碼在iOS 7,工作正常上iOS8上,但問題得到錯誤得到錯誤「錯誤域= com.alamofire.error.serialization.response代碼= -1011 「請求失敗:錯誤的請求(400)」 中的iOS 7

「錯誤域= com.alamofire.error.serialization.response代碼= -1011 」請求失敗:錯誤請求(400)「

UserInfo = 0x19039c00 {com.alamofire.serialization.response.error.response = {URL:http://xxx/api/abc/PostApi} {status code:400, headers { Connection = close; 「Content-Type」=「application/json」; Date =「Wed,20 May 2015 05:42:47 GMT」; Server = Apache; }},NSErrorFailingURLKey = http://xxx/api/abc/PostApi}, NSLocalizedDescription =請求失敗:壞請求(400), com.alamofire.serialization.response.error.data = < 7b227375 63636573 73223a66 616c7365 2c226d65 73736167 65223a22 4e6f2064 61746122 2c226461 7461223a 5b5d2c22 72657370 6f6e7365 5f636f64 65223a22 52433030 3033227d>}

這是我的代碼有問題

`

@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)」類似。

請幫助我,如果有任何關於它的想法。提前致謝。

+0

您可以使用像Charles這樣的代理來監視iOS7和iOS8中發送的內容,看看有什麼區別。 – Lefteris

+0

@Lefteris,thanx您的建議。我檢查了我的請求頭,兩者都是一樣的。 – Deepak

+0

不只是標題,也檢查帖子正文。有些東西肯定是不同的,導致一個不好的要求! – Lefteris

回答

0

您應該嘗試添加請求序列化程序到您的AFHTTPRequestOperationManager。

AFJSONRequestSerializer *jsonRequestSerializer = [AFJSONRequestSerializer serializer]; 
    [self.requestOperationManager setRequestSerializer:jsonRequestSerializer]; 
相關問題