2012-04-05 7 views
1

Ich versuche tatsächlich, eine PHP-Variable zu senden (zu sagen "Sie sind jetzt verbunden!"). Ich würde gerne wissen, wie diese Variable in meiner iPhone-Anwendung mit NSData wiederherstellen.Sende ein PHP-Objekt und eine Variable in NSData

Mein Code ist folgende:

NSMutableURLRequest *Requete = [NSMutableURLRequest requestWithURL:url]; 

[Requete setHTTPMethod:@"POST"]; 

// On passe les variables 

[Requete setHTTPBody:[[NSString stringWithFormat:@"email=%@ & 
password=%@",email,password]dataUsingEncoding:NSASCIIStringEncoding]]; 

NSURLResponse *response; 
NSError *error; 

NSData *result = [NSURLConnection sendSynchronousRequest:Requete returningResponse:&response error:&error];  

NSString *test = [[NSString alloc]initWithData:result encoding:NSASCIIStringEncoding]; 
NSLog(test); 

ich ein Echo haben "Connected!" in meinem phpscript.Ich möchte meine Variable zurückgeben $ connected = 1. Wenn ich dies ausführen die Konsole Drucken Verbunden! und nicht 1; Mehr, habe ich keine Idee, genau denselben Prozess zu machen, um ein PHP-Objekt wiederherzustellen?

Thank u alle,

Quentin

Antwort

1

PHP auf der Server-Seite ausgeführt wird, die alle Ihre Variablen bedeutet nicht mehr auf Ihrem Handy verfügbar sein (oder anders) Kunden, wenn Sie sie explizit definieren seien dort (durch Echo sie).

So haben Sie zwei Möglichkeiten:

  1. Bearbeiten Sie Ihre WebScript zu echo "$$connected=1"; Auf diese Weise werden Sie, dass als die Ausgabe in Ihrem NSData retreive. Beachten Sie, dass dies keine iPhone-Variable ist. Um es zu einer iPhone-Variablen zu machen, musst du etwas wie JSON machen, um deine PHP-Ausgabe zu kodieren: {"connected":1} ODER deine PHP-Datei einen PLIST erzeugen lassen. Und dann die NSData mit dem entsprechenden JSON/PLIST-Deseralisierer deseralisieren.

  2. Sie können Ihre iOS-Anwendung bearbeiten, um Ihre NSData in eine Zeichenfolge zu konvertieren und sie dann mit @ "Verbunden!" Zu vergleichen. Wenn es passt, erstellen Sie eine lokale iOS Variable (ein int?) Und stellen Sie es einfach gleich 1.

Methode 2 ist die einfachste, weil Sie bereits *test haben. Nur:

if ([test rangeOfString:@"Connected!"] > 0) test = @"1"; 

Mit Methode 1, müssen Sie

NSMutableDictionary *mydict = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error]; 
test = [mydict objectForKey:@"connected"]; 

BTW, wenn die Abstände zwischen Ihrer URL Variablen wurden nicht absichtlich für Stackoverflow Lesbarkeit hinzugefügt haben, sollten Sie sie entfernen, das heißt user=%@&pass=%@ statt von user=%@ & pass=%@.

PS - Wenn Sie iOS SDK < 5 verwenden, werden Sie die JSON seralization/deseralization mit einem Drittanbieter-Tool, zum Beispiel JSONKit, JSON, TouchJSON, etc ..

+0

Vielen Dank handhaben müssen für Ihre schnelle Antwort! Beide Lösungen scheinen interessant zu sein. Ich werde es versuchen. Also, ich denke, wenn ich ein PHP-Objekt senden möchte, wäre es besser für mich, die JSON-Lösung zu verwenden? – Quentin91360

+0

Absolut. Ich würde die erste Lösung verwenden. Sie können 'json_encode ($ myphpobj)' 'verwenden. Sie können auch denselben json_encode für Arrays verwenden. Dann werden Sie Ihr Objekt im NSMutableDictionary mit der Methode # 1 neu erstellt haben. –

+0

Danke Typ! Du schaukelst ;-) – Quentin91360