2016-05-02 4 views
1

Я новичок в XCode. Я хотел бы отправить некоторые данные на веб-сервер, который может принимать и отправлять только данные json. Поэтому я попробовал следующий код.Как отправить данные json на веб-сервер

NSMutableDictionary *newDatasetInfo = @{ 
            @"userName":@"abc", 
            @"passWord":@"1234", 
            @"apiKey":@"456789" 
            }.mutableCopy;  
    NSError *myError = nil; 
    NSData *post = [NSJSONSerialization dataWithJSONObject:newDatasetInfo options:NSJSONWritingPrettyPrinted error:&myError]; 


NSURLSessionConfiguration *sessionConfig=[NSURLSessionConfiguration defaultSessionConfiguration]; 
[email protected]{ 
             @"Accept":@"application/json" 
             }; 
NSURLSession *session=[NSURLSession sessionWithConfiguration:sessionConfig]; 
NSString *postdatalength=[NSString stringWithFormat:@"%lu",(unsigned long)[post length]]; 
NSMutableURLRequest *request=[[NSMutableURLRequest alloc] init]; 
[request setURL:([NSURL URLWithString:@"http://xx.xx.xx.xx/efg/ijk/login"])]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:postdatalength forHTTPHeaderField:@"Content-Length"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:post]; 
NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
    NSString *requestReply = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"requestReply: %@", requestReply);    

}]; 
[postDataTask resume]; 

Но после выполнения кода я получил ниже сообщение

публикуемой JSON не может быть разобрана.

Кто-нибудь знает, что здесь ошибка? Пожалуйста помоги.

+0

Почему бы не использовать AFNetworking? –

+0

Вы посмотрели на значения 'myError'? Кажется, что 'post' является правильным? Вам не нужно использовать изменяемый словарь для параметров. – Larme

ответ

2

Заменить ниже линии

NSMutableDictionary *newDatasetInfo = @{ 
           @"userName":@"abc", 
           @"passWord":@"1234", 
           @"apiKey":@"456789" 
           }.mutableCopy;  
NSError *myError = nil; 
NSData *post = [NSJSONSerialization dataWithJSONObject:newDatasetInfo options:NSJSONWritingPrettyPrinted error:&myError]; 

с

NSDictionary *newDatasetInfo = @{ 
             @"userName":@"abc", 
             @"passWord":@"1234", 
             @"apiKey":@"456789" 
             }; 

NSError *myError = nil; 
NSData *post = [NSJSONSerialization dataWithJSONObject:newDatasetInfo options:0 error:&myError]; 

И убедитесь, что все параметры (например, имя пользователя, пароль и т.д.) истинны проверить его дважды. вы должны сначала проверить услугу в postman или advance rest client. это различные инструменты для проверки веб-сервисов.

Надеюсь, это поможет :)

+0

Большое спасибо. Это сработало. –

+0

добро пожаловать ..... :) – Lion

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