1

私は実際にphp変数を送信しようとしています(「接続されました!」と言うため)。NSDataを使用してiPhoneアプリケーションでこの変数を回復する方法を知りたいです。

私のコードは次のとおりです。

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);

「接続済み!」というエコーがあります。phpscriptで変数を復元したい$connected=1を返します。これを実行すると、コンソールの印刷が接続されました。1ではありません。もう、phpオブジェクトを回復するためにまったく同じプロセスを実行することはわかりませんか?

みんなありがとう、

クエンティン

4

1 に答える 1

1

PHPはサーバー側で実行されます。つまり、明示的に定義しない限り、すべての変数をモバイル(またはその他の方法)のクライアントで使用できなくなります(エコーを使用して)。

したがって、2つのオプションがあります。

  1. Webスクリプトを次のように編集します。echo "$$connected=1";これにより、NSDataの出力として取得できます。ただし、これはiphone変数ではないことに注意してください。これをiphone変数にするには、PHP出力をJSONエンコードするなどの操作を行う必要があります。{"connected":1}または、phpファイルでPLISTを生成します。次に、適切なJSON/PLISTデセラライザーを使用してNSDataをデセラライズします。

  2. iOSアプリケーションを編集してNSDataを文字列に変換し、それを@ "Connected!"と比較することができます。一致する場合は、ローカルiOS変数(int?)を作成し、1に設定します。

すでに持っているので、方法2が最も簡単です*test。ただ:

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

方法1では、次のことを行う必要があります

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

ところで、URL変数間のスペースがStackOverflowの読みやすさのために意図的に追加されていない場合は、それらを削除する必要があります。つまり、user=%@&pass=%@の代わりにuser=%@ & pass=%@

PS-iOS SDK <5を使用している場合は、JSONKit、JSON、touchJSONなどのサードパーティツールを使用してJSONセラリゼーション/脱セラリゼーションを処理する必要があります。

于 2012-04-05T15:51:20.457 に答える