0

自分のサイトで作成した php ページと、自分が書いた xcode プロジェクトの NSData オブジェクトの間でデータを転送しようとしています。PHP ページは非常にシンプルで、次のようになります。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
        <head>
             <title>Mon MEGA BLOG</title>
             <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
         </head>
         <style type="text/css">
    form
         {
             text-align:center;
         }
    </style>


    <body>

<?php echo 'Bonjour'; ?>

</body>
</html>

「Bonjour」をデータ オブジェクトに転送したいと考えています。今回から $_GET メソッドで特定のオブジェクトを送信することは問題ありません (以下のコードで用意されていますが)。echo 関数を使用して、php ページの応答をテストしたいだけです。私のxcodeプロジェクトは次のようになります:

if(![loginText.text isEqualToString:@""] && ![passwordText.text isEqualToString:@""])
    {
        //1. creation de la request
        NSMutableString *string = [[NSMutableString alloc] initWithCapacity:200];
        NSString *string01 = @"http://attheshop.fr/index.php?prof=&pass="; 

        [string appendFormat:string01];
      NSString *string02 = loginText.text;
      NSString *string03 = passwordText.text;

        [string insertString:string03 atIndex:41];
        [string insertString:string02 atIndex:36];

        request01 =[NSURLRequest requestWithURL:[NSURL URLWithString:string]cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

        NSLog(@"%@", string);
        //2.creation de la connection et start loading data

       NSURLConnection *connection01 = [[NSURLConnection alloc] initWithRequest:request01 delegate:self];

       if(connection01)
       {
        //3.Create NSMutableData to receive data
        receivedData = [NSMutableData data];
           NSLog(@"Voici ce que contient le message %@", receivedData.description); 
        }

    } 
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    // This method is called when the server has determined that it // has enough information to create the NSURLResponse.
    // It can be called multiple times, for example in the case of a // redirect, so each time we reset the data.
    // receivedData is an instance variable declared elsewhere.
    [receivedData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    // Append the new data to receivedData. // receivedData is an instance variable declared elsewhere. 
    [receivedData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{

    // release the connection, and the data object 
    // inform the user 

    NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription], [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);

    //set an alert
    UIAlertView *alert01 = [[UIAlertView alloc] initWithTitle:@"Probleme de connexion" message:@"La connexion a échoué" delegate:self cancelButtonTitle:@"Recommençer" otherButtonTitles:nil];
    alert01.alertViewStyle = UIAlertViewStyleDefault;
    [alert01 show];
}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    // do something with the data // receivedData is declared as a method instance elsewhere 

    NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);

    //6.Mettre les informations téléchargées dans un objet data envoyé à home.

    NSData *response = [NSURLConnection sendSynchronousRequest:request01 returningResponse:nil error:nil];
    //NSLog(@"response %@", response.description);

    NSString *get = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
    NSLog(@"get %@", get.description);

    NSString *string04 = @"error";
    NSPredicate *errorTest = [NSPredicate predicateWithFormat:@"SELF CONTAINS %@", string04];
    BOOL defError = [errorTest evaluateWithObject:get];

    NSLog(@"%i",defError);

    if (!defError) 
    {
        //Si pas d'erreur, on lance le segue
        [self performSegueWithIdentifier:@"loginMainSegue" sender:self];
    }

    //5.Si mauvais login ou password message alerte erreur

    if (defError) 
    {
        UIAlertView *alert02 = [[UIAlertView alloc] initWithTitle:@"Erreur" message:@"Votre login ou votre password est erroné" delegate:self cancelButtonTitle:@"Recommençer" otherButtonTitles:nil];
        alert02.alertViewStyle = UIAlertViewStyleDefault;
        [alert02 show];        
    }

}

応答オブジェクトに「Bonjour」という単語だけではなく、php ページ全体が含まれている理由を知りたいです。

ご回答ありがとうございます

4

1 に答える 1

0

PHPビットのみが必要な場合は、ページ上のPHP以外のすべてを削除します。作成しているリクエストは、PHPビットだけでなく、そのHTTPリクエストのすべてを取得します。これには、ページにあるHTMLが含まれます。

または、JSONを使用してデータを移動します。json_encode()PHP側から取得し、JSONKitなどを使用してXcode側でデコードします。

于 2012-12-08T20:33:49.903 に答える