2015-02-07 3 views
2

AFNetworking ~> 2.0을 사용하여 JSON 본문에 POST 요청을 보내는 방법이 있습니까?
manager.requestSerializer = [AFJSONRequestSerializer serializer]; manager POST:<url> parameters: @{@"data":@"value"} success: <block> failure: <block>' JSON body에서 POST 요청 AFNetworking 2.0

을했지만 작동하지 않습니다

나는 사용하여 시도했다. 어떤 도움이라도 대단히 감사합니다. 감사합니다.

답변

5

parameters:이 아닌 NSMutableURLRequest에 JSON 본문을 추가 할 수 있습니다. 샘플 코드보기 :

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
// Set post method 
[request setHTTPMethod:@"POST"]; 
// Set header to accept JSON request 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
// Your params 
NSDictionary *params = @{@"data":@"value"}; 
// Change your 'params' dictionary to JSON string to set it into HTTP 
// body. Dictionary type will be not understanding by request. 
NSString *jsonString = [self getJSONStringWithDictionary:params]; 

// And finally, add it to HTTP body and job done. 
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]]; 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
AFHTTPRequestOperation *operation = [manager HTTPRequestOperationWithRequest:request success:<block> failure:<block>]; 

희망이 있으면 도움이 될 것입니다. 해피 코딩! :) 누군가가 AFNetworking 3.0을 찾는 경우

1

, 여기에 코드

NSError *writeError = nil; 

NSData* jsonData = [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:&writeError]; 
NSString* jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; 

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:120]; 

[request setHTTPMethod:@"POST"]; 
[request setValue: @"application/json; encoding=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setValue: @"application/json" forHTTPHeaderField:@"Accept"]; 
[request setHTTPBody: [jsonString dataUsingEncoding:NSUTF8StringEncoding]]; 

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

[[manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 

    if (!error) { 
     NSLog(@"Reply JSON: %@", responseObject); 

     if ([responseObject isKindOfClass:[NSDictionary class]]) { 
      //blah blah 
     } 
    } else { 

     NSLog(@"Error: %@", error); 
     NSLog(@"Response: %@",response); 
     NSLog(@"Response Object: %@",responseObject); 

    } 
}] resume]; 
입니다