2015-09-08 3 views
1

Я получаю эту ошибку при отправке JSON в URL:Невозможно опубликовать JSON Использование afnetworking в ИОС

Invalid top-level type in JSON write' 

Я даже отправку идеального JSON с помощью afnetworking коды после запроса Но он продолжает давать мне ошибку.

Мой код:

NSString * serviceType = @"xyz"; 
NSString * remarks [email protected]"project deadline is near "; 
NSString * emailId = @"xyx.live.com"; 


NSDictionary *params = 
@ { 
    @"serviceType" :serviceType, 
    @"remarks" :remarks, 
    @"emailId" :emailId 

}; 

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params 
                options:0 
                error:&error]; 


NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 



AFHTTPRequestOperationManager *manager2 = [AFHTTPRequestOperationManager manager]; 
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
manager2.requestSerializer = serializer; 



[manager2 POST:@"http://xyx.com" parameters:jsonString success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"JSON_post_fzzlogin: %@", responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 



    //here is place for code executed in success case 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error while sending POST" 
                 message:@"Sorry, try again." 
                 delegate:nil 
               cancelButtonTitle:@"Ok" 
               otherButtonTitles:nil]; 
    [alertView show]; 

    NSLog(@"Error: %@", error); 

}]; 

Пожалуйста, помогите мне эту связи .thanks заранее

ответ

1

Вы пытаетесь закодировать запрос дважды, потому что вы установили запрос сериалайзер для AFHTTPRequestOperationManager и обеспечиваете параметры, как закодированная строка JSON. Таким образом, вам нужно предоставить необработанные параметры, если вы хотите использовать сериализатор запросов или не использовать его и закодировать в JSON вручную.

1

Это, как вы размещаете JSON или довольно NSDictionary по AFNetworking

NSDictionary *dict = @{@"Key":@"Value"}; 
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager POST:[Util urlAppend:kListOfArticleCatagory] parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) { 

NSDictionary *responseObj = (NSDictionary *)responseObject;//casting to NSDictionary from id 
NSLog(@"%@",responseObj); 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Something went wrong :%@",operation.responseString); 

}]; 
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 
} 

Вы не отправлять JSON через AFNetworking, скорее NSDictionary в качестве параметров, он преобразуются в формат JSON, как вы разместите его.

Смежные вопросы