2017-03-16 13 views
0

「AFNetworking 3.0」でヘッダを追加するのと混乱します。以前のバージョンでは、RequestSerializerとして知られている機能があります。変更可能なリクエストに特定のヘッダーを追加するにはどうすればよいですか?AfNetworking 3.0でヘッダにヘッダを追加するには?

{ 
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 

NSString *path = [[NSBundle mainBundle] pathForResource:@"uploadedImage_3" ofType:@"jpg"]; 
[formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil]; 
} 
error:nil]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[request addValue:@"8b10056e-59e6-4d2b-aa4f-b08f8afff80a" forHTTPHeaderField:@"session_key"]; 
[request addValue:@"0" forHTTPHeaderField:@"resume_key"]; 

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

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 
       [_progressView setProgress:uploadProgress.fractionCompleted]; 
       }); 
      } 
      completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
       if (error) { 
       NSLog(@"Error: %@", error); 
       } else { 
       NSLog(@"%@ %@", response, responseObject); 
       } 
      }]; 

[uploadTask resume]; 
} 

これはMutableURLRequestにヘッダーを追加する方法ですか。

NSLocalizedDescription = Request failed: unsupported media type (415)} 

現在、上記のようなエラーが表示されています。

答えて

1

問題が見つかりました。

"要求のエンティティが要求された方法で要求されたリソースでサポートされていない形式になっているため、サーバーは要求のサービスを拒否しています。"

つまり、サーバーはapplication/jsonをサポートしていません。

私はちょうどこの2行を削除し、それが働いた...

[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
0

私はあなたがこれらのようなコードを書くことを提案し、

func apiRequest(method:String, urlMethod:String, parametersDictionary:NSMutableDictionary, success:@escaping successDictionaryBlock, failure: @escaping failBlockErrorMessage){ 
     let requestUrl = @“www.requestUrl” 

     let headerString = "\("Bearer") \(request Token)” 
     let headers: HTTPHeaders = [ 
      "Authorization": headerString, 

      ] 

     Alamofire.request(requestUrl, method: .post, parameters: (parametersDictionary as NSDictionary) as? Parameters , encoding: JSONEncoding.default, headers: headers).responseJSON { response in 

      if(response.result.error == nil){ 

       if((response.response?.statusCode)! < 500){ 

        if(response.response?.statusCode == 200){ 

         if let JSON = response.result.value { 

          let dict = JSON as! NSDictionary 

          let status :Bool = dict["status"] as! Bool 

          if(status){ 
           success(dict) 

          }else{ 
           failure(dict["message"] as! String) 
          } 

         } 
        }else{ 
         failure("Something went wrong please try again") 
        } 
       }else{ 
        failure("Something went wrong please try again") 
       } 
      } 
     } 

    } 
関連する問題