Я пытаюсь вернуть простой JSON в моем приложении iOS через файл PHP.
PHP:
<?php
header('Content-Type: application/json');
$myarray = array("io" => 1, "tu" => 2);
$out = json_encode($myarray);
echo $out;
?>
IOS:
-(void)provePHP{
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://mysite/myphpfile.php"]];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json"forHTTPHeaderField:@"Content-Type"];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
}
- (void)connection:(NSURLConnection *)connection
didReceiveData:(NSData *)data{
NSError *error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &error];
NSLog(@"%@ - %@", jsonDict, error);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"FINISH");
}
- (void)connection:(NSURLConnection *)connection
didFailWithError:(NSError *)error{
NSLog(@"Error");
}
Я не понимаю, что я делаю неправильно. Я слежу за множеством кода, который я нашел на этом сайте, но никаких результатов в журнале.
connection:didReceiveData:
может быть connection:didReceiveData:
несколько раз в соединении. У вас должно быть свойство NSMutableData
которое вы NSMutableData
данные, connection:didReceiveData:
в connection:didReceiveData:
затем работайте с данными, когда они все есть в connectionDidFinishLoading
.
Я бы предложил настроить код, чтобы следовать этим рекомендациям и видеть, есть ли у вас проблемы.
РЕДАКТИРОВАТЬ
Если вы не получаете журналы вообще, вы не правильно настроили свой класс как NSURLConnectionDelegate
. См. Документы для получения информации о том, что представляет собой шаблон делегата, и как сделать ваш класс делегатом класса framework в Objective-C.