【问题标题】:how to handle response in json如何处理json中的响应
【发布时间】:2015-10-29 06:05:51
【问题描述】:

我将这段代码用于 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: @"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];

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

【问题讨论】:

  • 你遇到了什么问题,你在这里得到什么结果 NSLog(@"Result: %@",request1);以及你在这里得到什么结果 NSLog(@"Result: %@",dictionary);
  • NSLog(@"Result: %@",request1); ;- " { URL: dev1.brainpulse.org/quickmanhelp/webservice/… }"
  • NSLog(@"Result: %@",dictionary); ;- 结果:{ 数据 = "";结果 = 0; }
  • 对不起你得到了什么结果 NSLog(@"Result: %@", mapData);
  • 当我打印地图数据时,我得到了我输入的所有 uitextfield 数据。像这样;-“公司名称”=“公司名称”;电子邮件 = "email_id";密码=密码;

标签: ios json


【解决方案1】:

你错了:

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

【讨论】:

  • 感谢您的宝贵回答先生,但我现在得到授权的价值下一步是如何将其添加到 url。
  • 我认为您在 setHTTPBody 的请求中添加字典是正确的
  • @SandeepChaudhary 请试试我的回答,NSDictionary *mapData = [[NSDictionary alloc] initWithObjectsAndKeys: _CompanyName.text,@"company_name", _Email.text,@"email_id", _Password.text,@"password",nil];。你做的一切都是正确的。我点的那行参数错误。
  • 我用你的代码更新了我的代码,但它仍然无法正常工作
  • 你得到了NSLog(@"Result: %@",dictionary); ;- Result: { data = ""; result = 0; } 。表示您的请求有效。有用。问题是您的请求和您的服务器不匹配参数。
【解决方案2】:

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

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");
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-28
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多