如何在json中处理响应

时间:2015-10-29 06:05:51

标签: ios json

我正在使用这段代码来处理网址中的点击数据。

NSError *error;
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURL *url = [NSURL URLWithString:@"http://dev1.brainpulse.org/quickmanhelp/webservice/api.php?act=registration"];
NSMutableURLRequest *request1 = [NSMutableURLRequest requestWithURL:url
                                                   cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];

[request1 addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request1 addValue:@"application/json" forHTTPHeaderField:@"Accept"];

[request1 setHTTPMethod:@"POST"];
NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys: @"company_name", _CompanyName.text,
                        @"email_id", _Email.text,@"password", _Password.text,nil];
NSLog(@"Result: %@",request1);

NSData *postData = [NSJSONSerialization dataWithJSONObject:mapData options:0 error:&error];
[request1 setHTTPBody:postData];

NSURLResponse *response = nil;
// NSError *error = nil;

NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request1 completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    //Handle your response here
    NSLog(@"Result: %@",mapData);
    NSLog(@"Result: %@",request1);
    NSLog(@"Result: %@",data);
    NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
    NSLog(@"Result: %@",dictionary);
    NSLog(@"Result error : %@",error.description);
}];
[postDataTask resume];
当我点击按钮时,

uitextfield的值不存储在url中,我该怎么办?

NSError *error;

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
NSURL *url = [NSURL URLWithString:@"http://dev1.brainpulse.org/quickmanhelp/webservice/api.php?act=registration"];
NSMutableURLRequest *request1 = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];

[request1 addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request1 addValue:@"application/json" forHTTPHeaderField:@"Accept"];

[request1 setHTTPMethod:@"POST"];
//NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys:  _CompanyName.text,@"company_name",
  //_Email.text,@"email_id", _Password.text,@"password",nil];

NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys:  @"yyyyy",@"company_name",
                         @"karthik.saral@gmail.com",@"email_id", @"XXXXX",@"password",nil];

NSLog(@"Result: %@",request1);

NSData *postData = [NSJSONSerialization dataWithJSONObject:mapData options:0 error:&error];
[request1 setHTTPBody:postData];

NSURLResponse *response = nil;

// NSError * error = nil;

NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request1 completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    //Handle your response here
    NSLog(@"Result: %@",mapData);
     NSLog(@"Result: %@",request1);
     NSLog(@"Result: %@",data);
    NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
    NSLog(@"Result: %@",dictionary);
    NSLog(@"Result error : %@",error.description);


    NSLog(@"answewrv : %@",dictionary);
    NSLog(@"Result error : %@",error.description);

}];
[postDataTask resume];
  

这是修正后的更新代码。我得到了同样的错误。

2 个答案:

答案 0 :(得分:0)

你错了:

NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys: @"company_name", _CompanyName.text,
                        @"email_id", _Email.text,@"password", _Password.text,nil];

应该是

NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys:  _CompanyName.text,@"company_name",
                         _Email.text,@"email_id", _Password.text,@"password",nil];

initWithObjectsAndKeys表示:object,key, object, key

答案 1 :(得分:0)

我也做过这种类型的工作,你可以看到这一点,可能会对你有帮助。

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
    NSURL *url = [NSURL URLWithString:@" your URL "];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                           cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                       timeoutInterval:60.0];

  [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];


    [request addValue:@"*/*" forHTTPHeaderField:@"Accept"];

    [request setHTTPMethod:@"POST"];

    NSString *mapData = [NSString stringWithFormat:@"username=%@&password=%@&api_key=Your key", usernameField.text,passwordField.text];

       NSData *postData = [mapData dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    [request setHTTPBody:postData];

    NSLog(@"%@", mapData);



    NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

        if(error == nil)
        {

            NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
            NSLog(@"Data = %@",text);

            NSError *error = nil;
            NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

            if(error!=nil)
            {
                NSLog(@"error = %@",error);

            }

            dispatch_async(dispatch_get_main_queue(), ^{
                [self checkUserSuccessfulLogin:json];
            });
        }
        else{

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

        }


    }];


    [postDataTask resume];

}
- (void)checkUserSuccessfulLogin:(id)json
{
  //  NSError *error;
   NSDictionary *dictionary = (NSDictionary *)json;


    if ([[dictionary allKeys] containsObject:@"login"])
    {
        if ([[dictionary objectForKey:@"login"] boolValue])
        {
            [self saveLoginFileToDocDir:dictionary];
            ItemManagement *i = [[ItemManagement alloc]init];
            [self presentViewController:i animated:YES completion:Nil];

        }
        else
        {
            NSLog(@"Unsuccessful, Try again.");
            UIAlertView *alertLogin = [[UIAlertView alloc]initWithTitle:@"Error" message:@"Wrong Username Or Password" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil];
            [alertLogin show];
        }
    }
}




- (void)saveLoginFileToDocDir:(NSDictionary *)dictionary
{
    NSArray *pListpaths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
    NSString *pListdocumentsDirectory = [pListpaths objectAtIndex:0];
    NSString *path = [pListdocumentsDirectory stringByAppendingPathComponent:@"Login.plist"];

    BOOL flag = [dictionary writeToFile:path atomically:true];

    if (flag)
    {
        NSLog(@"Saved");
    }
    else
    {
        NSLog(@"Not Saved");
    }

}