如何在iPhone中使用JSON从Web服务器获取数据

3
我想使用JSON和Web服务从Web服务器获取数据,然后解析JSON响应字符串。然后,我需要将从Web服务器获取的数据插入到SQLite数据库中。我已经通过HTTP post方法将数据发布到服务器API数据库,并且这正常工作,我的数据正在保存到服务器数据库中。我收到的响应格式如下:
    {"TokenID":"od28Denamu","isError":false,"ErrorMessage":"","Result":[{"UserId":"153","FirstName":"Rocky","LastName":"Yadav","Email":"rocky@itg.com","ProfileImage":null,"ThumbnailImage":null,"DeviceInfoId":"12"}],"ErrorCode":900}

我需要解析JSON数据并将其保存到本地SQLite数据库中,该数据库表与服务器数据库相同。
这是我的代码:
    //this is used to post the data to web server database through HTTP POST method
    -(void)sendRequest
    {
        UIDevice *device = [UIDevice currentDevice];
        NSString *udid = [device uniqueIdentifier];
        NSString *sysname = [device systemName];
        NSString *sysver = [device systemVersion];
        NSString *model = [device model];
        NSLog(@"idis:%@",[device uniqueIdentifier]);
        NSLog(@"system nameis :%@",[device systemName]);
        NSLog(@"System version is:%@",[device systemVersion]);
        NSLog(@"System model is:%@",[device model]);
        NSLog(@"device orientation is:%d",[device orientation]);
        NSString *post = [NSString stringWithFormat:@"Loginkey=%@&Password=%@&DeviceCode=%@&Firmware=%@&IMEI=%@",txtUserName.text,txtPassword.text,model,sysver,udid];
        NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
        NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 
        NSLog(@"%@",postLength);
        NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
            //this is my web server api method which consist of 5 parameters Loginkey,Password,DeviceCode,Firmware,IMEI
    Loginkey takes Username of user
    Password takes password of user
    DeviceCode takes device model
    Firmware takes device Version
    IMEI takes uniqueidentifier of device.
        [request setURL:[NSURL URLWithString:@"http://192.168.0.68:91/JourneyMapperAPI?RequestType=Login"]]; 
        [request setHTTPMethod:@"POST"]; 
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
        [request setHTTPBody:postData];

        NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

        if (theConnection) {
            webData = [[NSMutableData data] retain];
            NSLog(@"%@",webData);
        }
        else 
        {

        }

    }





    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
    {   
        [webData setLength: 0]; 
    } 

    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
    {         
        [webData appendData:data]; 

    } 

    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
    {     
        [connection release];  
        [webData release]; 

    } 
    //this is used to fetch the data through JSON .
    -(void)connectionDidFinishLoading:(NSURLConnection *)connection 
    {      
        //NSString *loginStatus = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding]; 




        NSString *loginStatus = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
        NSLog(@"%@",loginStatus);
        self.webData = nil;

        NSArray* latestLoans = [(NSDictionary*)[loginStatus JSONValue] objectForKey:@"Login"];
        [loginStatus release];

        //get latest loan
        NSDictionary* loan = [latestLoans objectAtIndex:0];

        //fetch the data
        NSString* fundedAmount = [loan objectForKey:@"Loginkey"];
        NSString* loanAmount = [loan objectForKey:@"Password"];
        NSLog(@"this is foundedamount:%@",fundedAmount);
        NSLog(@"this is loanAmount:%@",loanAmount);

        //float outstandingAmount = [loanAmount floatValue] - [fundedAmount floatValue];

        //NSString* name = [loan objectForKey:@"name"];
        //NSString* country = [(NSDictionary*)[loan objectForKey:@"location"] objectForKey:@"country"];

        //set the text to the label
        //label.text = [NSString stringWithFormat:@"Latest loan: %@ from %@ needs another $%.2f, please help",
                      //name,country,outstandingAmount
                     // ];

        //greeting.text = loginStatus;   
        [loginStatus release];           
        [connection release];  
        [webData release]; 
    } 

但是,当我通过JSON代码获取数据时,出现了问题,而向服务器发送数据则正常工作。
当我获取数据时,显示的值是NSLOG(@"this is foundedamount:null")。可能出现什么问题,请帮助我解决这个问题。
谢谢。
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接