2011-06-14 73 views
3

我想使用JSON和webservice從Web服務器獲取數據,然後解析JSON響應字符串。 然後我需要將我從網絡服務器獲取的數據插入到sqlite數據庫中。 我已經做了通過HTTP POST方法發佈的數據服務器API數據庫,這是正常工作,我的數據是越來越保存到我的服務器database.And的響應,我得到的是這種格式:如何在iPhone中使用JSON從Web服務器獲取數據

{"TokenID":"od28Denamu","isError":false,"ErrorMessage":"","Result":[{"UserId":"153","FirstName":"Rocky","LastName":"Yadav","Email":"[email protected]","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")值顯示。可能是什麼問題。請幫我解決這個問題。

感謝

回答

相關問題