Я создал веб-сервис в PHP, который имеет 1 функцию с 1 параметром. Я использую phpMyadmin в качестве задней части. Он использует формат json для извлечения данных. Веб-сервис работает отлично. Я хочу использовать эту веб-службу в своем приложении для iPhone. Я хочу передать 1 параметр. Я также упомянул учебник rayWenderlich как ссылку. Но не может найти решение. Пожалуйста, помогите мне.
Это мой код веб-сервиса:
<?php echo getdata($_REQUEST['lastupdate']); function getdata($lastupdatedate){ $json = '{"foo-bar": 12345}'; $obj = json_decode($json); //print $obj->{'foo-bar'}; // 12345 $con = mysql_connect("localhost","un","Password"); if (!$con){ die('Could not connect: ' . mysql_error()); } //print_r($con); mysql_select_db("roster", $con); $query = "select * from rates where LastUpdated = '".$lastupdatedate."' order by LastUpdated limit 1"; $rs = mysql_query($query) or die($query); //print_r($rs); while($row=mysql_fetch_assoc($rs)){ $record[] = $row; } $data = json_encode($record); header('Cache-Control: no-cache, must-revalidate'); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Content-type: application/json'); return $data; }
Iphone App стороны, я пробовал под кодом:
-(void)GETJSONDATA { SBJSON *json = [SBJSON new]; json.humanReadable = YES; responseData = [NSMutableData data]; NSString *service = @""; NSString *str; str = @"LastUpdated"; NSString *requestString = [NSString stringWithFormat:@"{\"LastUpdated\":\"%@\"}",str]; // [[NSUserDefaults standardUserDefaults] setValue:nil forKey:@"WRONGANSWER"]; NSLog(@"request string:%@",requestString); NSData *requestData = [NSData dataWithBytes: [requestString UTF8String] length: [requestString length]]; NSString *fileLoc = [[NSBundle mainBundle] pathForResource:@"URLName" ofType:@"plist"]; NSDictionary *fileContents = [[NSDictionary alloc] initWithContentsOfFile:fileLoc]; NSString *urlLoc = [fileContents objectForKey:@"URL"]; urlLoc = [urlLoc stringByAppendingString:@"?lastupdate=2012-09-01 01:00:00"]; NSLog(@"URL : %@",urlLoc); NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: urlLoc]]; NSString *postLength = [NSString stringWithFormat:@"%d", [requestData length]]; [request setHTTPMethod: @"POST"]; [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setHTTPBody: requestData]; NSError *respError = nil; NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: &respError ]; if (respError) { // NSString *msg = [NSString stringWithFormat:@"Connection failed! Error - %@ %@", // [respError localizedDescription], // [[respError userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ACTEC" message:@"check your network connection" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } else { NSUserDefaults *dd = [NSUserDefaults standardUserDefaults]; NSString *responseString = [[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding]; NSLog(@"Resp : %@",responseString); NSDictionary *results = [responseString JSONValue]; NSLog(@"results=%@",results); } }
Возможно, вы захотите изучить библиотеку. AFNetworking предоставляет класс AFHTTPClient, который позволяет вам подключаться к спокойной веб-службе и делать простые звонки на нее. Предполагая конечную точку, вы можете сделать что-то вроде этого:
NSDictionary *body = [NSDictionary dictionaryWitObject:@"LastUpdated" forKey:@"LastUpdated"]; NSString *fileLoc = [[NSBundle mainBundle] pathForResource:@"URLName" ofType:@"plist"]; NSDictionary *fileContents = [[NSDictionary alloc] initWithContentsOfFile:fileLoc]; NSString *urlLoc = [fileContents objectForKey:@"URL"]; urlLoc = [urlLoc stringByAppendingString:@"?lastupdate=2012-09-01 01:00:00"]; AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:urlLoc]]; [client postPath:@"endpoint" parameters:body success:^(AFHTTPRequestOperation *operation, id responseObject) { // Do something with the responseObject } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // Log the error and proceed }];
Вы можете найти документы здесь: http://engineering.gowalla.com/AFNetworking/Classes/AFHTTPClient.html