2011-07-14 7 views
-1

de Possible en double:
Cannot Get ASIHTTPRequest callback delegate to triggerPHP JSON pour iPhone

Je dispose d'un fichier php qui affiche le JSON suivant:

[{"0":"5","questionId":"5","1":"Morning Heart Rate","question":"Morning Heart Rate","2":"5","questionNumber":"5","3":"1","sectionId":"1"},{"0":"4","questionId":"4","1":"Evening Urine Colour","question":"Evening Urine Colour","2":"4","questionNumber":"4","3":"1","sectionId":"1"},{"0":"3","questionId":"3","1":"Evening Bodyweight","question":"Evening Bodyweight","2":"3","questionNumber":"3","3":"1","sectionId":"1"},{"0":"2","questionId":"2","1":"Morning Urine Colour","question":"Morning Urine Colour","2":"2","questionNumber":"2","3":"1","sectionId":"1"},{"0":"1","questionId":"1","1":"Morning Bodyweight","question":"Morning Bodyweight","2":"1","questionNumber":"1","3":"1","sectionId":"1"},{"0":"6","questionId":"6","1":"Time of Month (TOM)","question":"Time of Month (TOM)","2":"6","questionNumber":"6","3":"1","sectionId":"1"}] 

Cela peut être vu à la lien suivant:

http://dev.speechlink.co.uk/David/get_questionstest.php

J'utilise JSONKit comme cadre pour le décodage JSON dans l'objectif C. La méthode suivante est utilisée pour communiquer avec le php:

// méthode pour

+(void)getQuestions:(NSString*)sectionId{ 
    NSString* url = @"http://dev.speechlink.co.uk/David/get_questions.php"; 
    NSURL *link = [NSURL URLWithString:url]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:link]; 
    [request setPostValue:sectionId forKey:@"section"]; 
    [request setDelegate:self]; 
    [request setDidFinishSelector:@selector(requestFinished:)]; 
    [request startAsynchronous];  
} 

- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    //NSString *response = [request responseString]; 
    NSLog(@"hello"); //never prints 
} 

Le délégué est jamais appelé ... Quelqu'un peut-il expliquer?

Répondre

0
- (void)getQuestions:(NSString*)sectionId 

Déclarez la méthode à une méthode d'instance et non une méthode de classe.

Lorsque vous définissez [request setDelegate:self];, self doit être un objet alloué.

0

Je vérifie le lien http://dev.speechlink.co.uk/David/get_questionstest.php et il donne la réponse comme vous l'avez décrit. Mais dans votre code, le lien que vous avez utilisé est différent de celui que vous avez fourni ci-dessus.

http://dev.speechlink.co.uk/David/get_questions.php qui ne donne aucune réponse et cela peut être le cas pourquoi votre délégué n'appelle pas. S'il vous plaît changer "get_questions.php" avec "get_questionstest.php" et cela fonctionnera bien. Informez-moi s'il y a un problème.

+0

Je devais les changer car mon php réel nécessite une variable affichée avant de retourner les données - get_questionstest.php supprime les variables _POST et le fait fonctionner indépendamment ... – David

+0

Mais j'ai vérifié ce lien: http: //dev.speechlink. co.uk/David/get_questions.php Et il ne donne aucune réponse. Vous pouvez également vérifier dans le navigateur. – AppAspect