recuperer une réponse d'un serveur

Bonjour, je reviens vers vous avec mon problème de serveur.


 


Mon code arduino doit renvoyer une réponse au client (ici mon app iOS) 


et je ne sais pas trop comment récuperer cette réponse.


j'imagine que c'est un objet NSData qui doit faire ça, mais malgré les nombreux tutos, je rame !


Si une âme charitable pouvait me donner un soupçon de réponse, ça serait top.



void loop() {

EthernetClient client = server.available();
if (client) {

boolean currentLineIsBlank = true;
stringInput = "";

if (client.connected()) {
while (client.available()) {

char c = client.read();

if(stringInput.length() < sizeString) {
stringInput.concat(c);

}

if (c == '\n' && currentLineIsBlank) {

client.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

client.println("<estadoDomotica>");

// You can configure all pins (digitals or analog) here, copy and paste the block, and configure the pin
// // P2
client.print("<Pin>");
client.print("<namePin>Pin 2</namePin>");
client.print("<digitalPin>");
// Digital pin to control
client.print(Pin2);
client.print("</digitalPin>");
client.print("<Estado>");
client.print(digitalRead(Pin2));
client.print("</Estado>");
client.print("</Pin>");

Réponses

  • LarmeLarme Membre

    Je pense que tu peux t'inspirer de ça et d'utiliser des NSStream.


  • Merci Larme pour ta réponse.


    Entre temps, j'ai un peu avancé.


    J'arrive à  me connecté au serveur arduino et à  recevoir une réponse (mon NSLog en témoigne )


    Par contre j'aimerai maintenant récupérer la valeur de l'état des pins qui se trouve dans la réponse du serveur et l'afficher dans un label


     


    Mon code :



    - (IBAction)testconnect:(id)sender {

    NSString *myURLString =[NSString stringWithFormat:@http:;//%@", contenue.text];
    NSURL *url =[NSURL URLWithString:myURLString];
    NSURLRequest *req =[NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:req delegate:self];
    NSLog(@%@",reponse);

    if (connection) {
    etaconnect.text = @connecté; }
    else {
    etaconnect.text = @déconnecté; }}


    - (void)connection: (NSURLConnection*)connection didReceiveData:(NSData *)data {
    reponse = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

    }

    - (void)connectionDidFinishLoading:(NSURLConnection*)connection{
    if ([reponse isEqualToString:@""])
    {

    }
    else {

    }
    }


    et voici ce que mon NSLog m'affiche :


     


    La valeur a récupérer est soit 0 ou 1 à  coté de : <Estado>0</Estado>


     


     


    2015-03-15 20:57:59.841 agriduino[763:289187] <?xml version="1.0" encoding="utf-8"?>


     


    <estadoDomotica>


     


    <Pin><Nombre>Pin 2</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Pin 3</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Pin 4</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Pin 5</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Pin 6</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Pin 7</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Pin 8</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Pin 9</Nombre><Estado>0</Estado></Pin><Pin><Nombre>Analog 0</Nombre><Estado>200</Estado></Pin><Pin><Nombre>Analog 1</Nombre><Estado>213</Estado></Pin><Pin><Nombre>Analog 2</Nombre><Estado>184</Estado></Pin><Pin><Nombre>Analog 3</Nombre><Estado>184</Estado></Pin><Pin><Nombre>Analog 4</Nombre><Estado>217</Estado></Pin><Pin><Nombre>Analog 5</Nombre><Estado>127</Estado></Pin></estadoDomotica>

  • LarmeLarme Membre

    Va falloir regarder du côté des parsers XML (NSXMLParser par exemple)


  • Merci je vais voir ça
Connectez-vous ou Inscrivez-vous pour répondre.