Partage
  • Partager sur Facebook
  • Partager sur Twitter

[iOS] Requete HTTP methode POST

    4 octobre 2012 à 16:59:55

    Voila je cherche a envoyer des donnes d'un form via la methode POST a un fichier PHP qui insere une nouvelle annonce dans ma base sql et me retourne un fichier xml contenant les donne du nouveau objt annonce cree et je dois parser le xml et récupérer l'id de l'annonce .

    voila :
    *comment faire appel a un fichier php en passent les donne en paramètres?

    *Comment parser le fichier xml pour récupérer l'id ??

    =====>
    Dans mon application on a un formulaire pour ajouter une nouvelle annonce en saisissant :
    titre, kilometre,annee,prix,energie,boitevitesse,description,nom,email,telephone et code postale.

    ==> je dois envoyer c donne au fichier php: newAnnonce.php?

    Le fichier php est fonctionnel il suffit de le tester dans le navigateur en saisissant l'adressse:

    http://www...../mobile/scripts/newAnnonce.phpmail=dev6.web@blabla.com&nom=jack&telephone=0699887766&zipCode=91300&ville=massy&title=cliooo&annee=2000&km=98000&energie=GPL&boite=Manuelle&dscp=test&price=15000e

    et le resultat est un fichiier XML :


    <results>
    <Annonce>
    <AnnonceID>6418574</AnnonceID>
    <tittre>cliooo</tittre>
    <Annee>2000</Annee>
    <Kilometres>98000</Kilometres>
    <Energie>GPL</Energie>
    <energyID>3</energyID>
    <vitesse>Manuelle</vitesse>
    <vitesseID>1</vitesseID>
    <description>test</description>
    <Prix>15000e</Prix>
    <Membre-ann_id>542303</Membre-ann_id>
    <lastname>jack</lastname>
    <email>dev6.web@blabla.com</email>
    <telephone>0699887766</telephone>
    <CodePostale>91300</CodePostale>
    </Annonce>
    </results>
    




    voila j'ai essayé, mais en étant debutante en objective c je n'ai pas reussi.
    Voici ma methode dans mon fichier .m:


    - (IBAction)valider
    { 
    //VERIFICATION DES CHAMPS
    if(![self VerifObligatoire])
    return;
    
    // Verif du mobile
    if(![self VerifTelephone])
    return;
    
    
    
    [self startIndicator];
    
    
    //definir les donnes
    
    NSString *stTitre=@"";	
    NSString *stAnnee=@"";	
    NSString *stKm=@"";
    NSString *stPrix=@"";
    NSString *stEnergie=@"";
    NSString *stBoiteVitesse=@"";
    NSString *stDescription=@"";
    NSString *nom=@"";	
    NSString *mail=@"";	
    NSString *villecp=@"";
    NSString *phone=@"";
    
    if (![titreAnnonce.text isEqualToString:@"Ex : Renault Clio"]) 
    {
    stTitre=[NSString stringWithFormat:@"%@",titreAnnonce.text];
    }
    if (![Annee.text isEqualToString:@"Ex : 2007"]) 
    {
    stAnnee=[NSString stringWithFormat:@"%@",Annee.text];
    }
    if (![Km.text isEqualToString:@"Ex : 56000"]) 
    {
    stKm=[NSString stringWithFormat:@"%@",Km.text];
    }
    if (![Prix.text isEqualToString:@"Ex : 14500"]) 
    {
    stPrix=[NSString stringWithFormat:@"%@",Prix.text];
    }
    
    if (![energie.text isEqualToString:@"Choisir une énergie"]) 
    {
    stEnergie=[NSString stringWithFormat:@"%@",energie.text];
    }
    if (![labelBoiteVitesse.text isEqualToString:@"Choisissez la boîte"])
    {
    stBoiteVitesse=[NSString stringWithFormat:@"%@",labelBoiteVitesse.text];
    
    }
    if (![descriptionLabel.text isEqualToString:@"Indiquer des détails"]) 
    {
    stDescription=[NSString stringWithFormat:@"%@",descriptionLabel.text];
    } 
    
    
    
    if (![labelCodePostal.text isEqualToString:@"Choisir la ville"]) 
    {
    villecp=[NSString stringWithFormat:@"%@",labelCodePostal.text];
    }
    if (![Email.text isEqualToString:@"Ex: exemple@free.fr"]) 
    {
    mail=[NSString stringWithFormat:@"%@",Email.text];
    }
    if (![Nom.text isEqualToString:@"Votre nom"]) 
    {
    nom=[NSString stringWithFormat:@"%@",Nom.text];
    }
    if (![telephone.text isEqualToString:@"Ex :"]) 
    {
    phone=[NSString stringWithFormat:@"%@",telephone.text];
    }
    
    
    
    NSArray* foo = [labelCodePostal.text componentsSeparatedByString: @","];
    NSString* ville = [foo objectAtIndex: 0];
    NSString* zipcp = [foo objectAtIndex: 1];
    
    
    //////////////////////////////////////////////////////////////////////////////////////////////////
    // Envoi de l'annonce par méthode POST
    //////////////////////////////////////////////////////////////////////////////////////////////////
    
    
    NSError *error;
    NSString *reponse;
    // Faire la connexion DB
    
    NSString *nEnvoi=@"";
    NSString *site1= NSLocalizedString(@"site2", @"www.ci-Ville.fr");
    NSString *nUrl = [NSString stringWithFormat:@"%@newAnnonce.php?",site1];	
    
    
    
    //Création des paramètres de la méthode POST
    NSString *post = [NSString stringWithFormat:@"mail=%@&nom=%@&telephone=%@&zipCode=%@&ville=%@&title=%@&annee=%@&km=%@&energie=%@&boite=%@&dscp=%@&price=%@",mail,nom,phone,zipcp,ville,stTitre,stAnnee,stKm,stEnergie,stBoiteVitesse,stDescription,stPrix];
    
    
    NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    
    
    //On précise l'URL
    NSString *url = [NSString stringWithFormat:@"%@%@",nUrl,post];
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:url]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];
    
    NSLog(@"%@",postData);	
    NSString *nomFichier=@"";
    
    //Envoie de la requête POST de manière synchrone
    NSData *returnXml = [NSURLConnection sendSynchronousRequest:request returningResponse:&reponse error:&error];
    if (returnXml !=nil) 
    {	
    NSString *errorString;
    NSPropertyListFormat format; 
    
    NSDictionary *plist;
    plist =[NSPropertyListSerialization
    propertyListFromData:returnXml
    mutabilityOption:NSPropertyListMutableContainersAndLeaves
    format: &format
    errorDescription:&errorString]; 
    
    NSMutableArray *idAn;  // id de l'annonce cree 
    idAn = [plist valueForKeyPath:@"results.Annonce.AnnonceID"];
    
    if ([idAn count]==0)
    {
    [[FoncGlobal sharedFoncGlobal] stopviewWait: self.view]; 
    NSLog(@"Erreur de creation de l'annonce");
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Erreur" message:@"impossible de créer l'annonce." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
    return;
    } 
    
    
    
    
    [[FoncGlobal sharedFoncGlobal] stopviewWait: self.view];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Annonce" message:NSLocalizedString(@"annoncreer", @"") delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
    
    titreAnnonce.text=@"";
    Annee.text=@"";
    Km.text=@"";
    Prix.text=@"";
    energie.text=@""; 
    descriptionLabel.text=@"";
    labelBoiteVitesse.text=@"";
    Nom.text=@"";
    Email.text=@"";
    labelCodePostal.text=@"";
    telephone.text=@"";
    
    
    [bimage1 setBackgroundImage:NULL forState:UIControlStateNormal];
    [bimage2 setBackgroundImage:NULL forState:UIControlStateNormal]; 
    [bimage3 setBackgroundImage:NULL forState:UIControlStateNormal];
    
    }
    



    A l'aide SVP !!!!!!!!!! j'an ai marre je c plus qu'est ce qui cloche la dedans!! :(:(:(:(:(:(:(
    • Partager sur Facebook
    • Partager sur Twitter
      4 octobre 2012 à 18:49:14

      Moi j'utilise une librairie pour communiquer par WS, c'est super simple: https://github.com/AFNetworking/AFNetworking
      T'as des exemples sur le repo.

      Pour parser un fichier json: http://www.raywenderlich.com/5492/work [...] json-in-ios-5

      Sinon un conseil, essaye de procéder par étape pour connaître ton problème (le WS marche?, on recupere bien les données? on parse bien?? etc)
      • Partager sur Facebook
      • Partager sur Twitter
        4 octobre 2012 à 19:55:15

        Bonjour,

        J'ai modifié ton titre afin qu'il soit conforme aux règles du forum "Mobile" et du site. Il est inutile d'abuser de la ponctuation, des majuscules et de crier à l'aide.

        Merci d'éviter ce genre de chose à l'avenir.
        • Partager sur Facebook
        • Partager sur Twitter
        Si vous voulez me retrouver, rendez-vous sur ZesteDeSavoir.
          4 octobre 2012 à 23:40:07

          Citation : Horiel

          Moi j'utilise une librairie pour communiquer par WS, c'est super simple: https://github.com/AFNetworking/AFNetworking
          T'as des exemples sur le repo.

          Pour parser un fichier json: http://www.raywenderlich.com/5492/work [...] json-in-ios-5

          Sinon un conseil, essaye de procéder par étape pour connaître ton problème (le WS marche?, on recupere bien les données? on parse bien?? etc)




          Ce n'est pas un fichier json mais un fichier php et il est bien fonctionnel je recupere bien tout les infos du nouveau objet annonce que je creer dans ma base de donnee sql!

          Mon problème est que je m'y connais pas trop en objective c et jdois completer l'appli :(( Je voudrai savoir comment je peut envoyer une requette http via methode poste et comment parser un fichier xml pour recuperer ces donne et les afficher dans un table view c'est simple :((((( aidez moiiii
          • Partager sur Facebook
          • Partager sur Twitter

          [iOS] Requete HTTP methode POST

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown