boolean httpRequest(byte peticion, char* valor) { boolean ping = 0; boolean errorFeed = 0; char newKey; // RESETEAMOS VARIABLES errHttp[9] = 0; errHttp[10] = 0; errHttp[11] = 0; msjHttp[0] = 0; msjHttp[1] = 0; char ssl_client[40]=""; //50 char urlenc_client[40]=""; char peticio[100]=""; // 150 //char msjHttpError[100]=""; /////////////////////////////////////////////////////////////////////////// // PETICION GET AL SERVIDOR /////////////////////////////////////////////////////////////////////////// Serial.println(); Serial.println("********** CONECTANDO ***************"); lcd.clear(); lcd.print("connecting "); if ( cliente_lector.connect(serverHostname, 80) ) { Serial.println(); Serial.println("REQUEST: connected"); SSL(peticions[0], keySslClient, ssl_client); // PING urlencode(urlenc_client, ssl_client); strcat(peticio, "GET /"); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(codigo_lector, keySslClient, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/ HTTP/1.1"); cliente_lector.println(peticio); cliente_lector.print("Host: "); cliente_lector.println(serverHostname); cliente_lector.println(); Serial.println(peticio); /////////////////////////////////////////////////////////////////////////// // ESPERA A UNA RESPUESTA DEL SERVIDOR /////////////////////////////////////////////////////////////////////////// httpListen(keySslServer, 8); /////////////////////////////////////////////////////////////////////////// // ANALISIS DE MENSAJE RECIBIDO Y PETICION SIGUIENTE YA CODIFICADA /////////////////////////////////////////////////////////////////////////// if( (errHttp[9] == '2') && (errHttp[10] == '0') && (errHttp[11] == '0') )// Deteccion del codigo 200 { int i = 0; Serial.print("REQUEST: msj received: "); Serial.println(msjHttp); //lcd.clear(); //lcd.print("msj received: "); //lcd.setCursor(0,1); //lcd.print(msjHttp); lcd.clear(); lcd.print("connected"); if( (msjHttp[0] == 'O') && (msjHttp[1] == 'K') ) { Serial.println("REQUEST: OK detected"); // SLL!! newKey = msjHttp[3]; newKey = keySslClient; Serial.print("REQUEST: New Key: "); Serial.println(newKey, DEC); Serial.println("********"); Serial.println(peticions[peticion]); Serial.println("********"); //lcd.setCursor(10,1); //lcd.print(peticions[peticion]); //lcd.clear(); //lcd.print("connected!"); ping = 1; // Enviar peticion con uno de los cuatro codigos strcpy(ssl_client, ""); strcpy(urlenc_client, ""); strcpy(peticio, ""); switch (peticion) { case 1: // /init/codigo_lector/rfid/PIN/ SSL(peticions[peticion], newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, "GET /"); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(codigo_lector, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(rfid, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); //////////////////////////////////////// strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(PIN, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/ HTTP/1.1"); break; case 2: // /baja/codigo_lector/rfid/PIN/ SSL(peticions[peticion], newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, "GET /"); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(codigo_lector, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(rfid, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); //////////////////////////////////////// strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(PIN, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/ HTTP/1.1"); break; case 3: // /oper/codigo_lector/rfid/descuento/PIN/ : per a sumar al saldo al server SSL(peticions[peticion], newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, "GET /"); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(codigo_lector, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(rfid, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(valor, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); /////////////////////////////////////////// strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(PIN, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/ HTTP/1.1"); break; case 4: // /cobro/codigo_lector/rfid/canjeo/PIN/ : per a restar al saldo al server SSL(peticions[peticion], newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, "GET /"); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(codigo_lector, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(rfid, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(valor, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); ////////////////////////////////////////// strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(PIN, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/ HTTP/1.1"); break; case 5: // apretando la 'A' durante dos segundos // /saldo/codigo_lector/rfid/PIN SSL(peticions[peticion], newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, "GET /"); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(codigo_lector, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(rfid, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); //////////////////////////////////////// strcat(peticio, "/"); strcpy(ssl_client, ""); strcpy(urlenc_client, ""); SSL(PIN, newKey, ssl_client); urlencode(urlenc_client, ssl_client); strcat(peticio, urlenc_client); strcat(peticio, "/ HTTP/1.1"); break; } cliente_lector.println(peticio); cliente_lector.print("Host: "); cliente_lector.println(serverHostname); cliente_lector.println(); Serial.println(peticio); } else if( (msjHttp[0] == 'K') && (msjHttp[1] == 'O') ) { Serial.println("REQUEST: KO detected"); ping = 0; lcd.clear(); lcd.print("message"); lcd.setCursor(0,1); lcd.print("not valid"); } else { Serial.println("REQUEST: msj not valid"); ping = 0; lcd.clear(); lcd.print("message"); lcd.setCursor(0,1); lcd.print("not valid"); } } else { Serial.println("REQUEST: Server not respond"); Serial.println(errHttp); } ////////////////////////////////////////////////////////////////////////////////////////// // ESPERA A UNA RESPUESTA DEL SERVIDOR Y ACTUALIZACION DEL LCD ////////////////////////////////////////////////////////////////////////////////////////// if(ping) // Si la primera peticion se ha hecho correctamente enviamos el nuevo dato { // SLL!! httpListen((byte)newKey, 8); httpListen(keySslServer, 8); // es 8 o 9 dependiendo de si esta la linea set-cookie que envia el server if( (errHttp[9] == '2') && (errHttp[10] == '0') && (errHttp[11] == '0') )// Deteccion del codigo 200 { Serial.print("2- REQUEST: msj received with key "); Serial.println(newKey, DEC); Serial.print(" is "); Serial.println(msjHttp); lcd.clear(); lcd.print("Server msj: "); lcd.setCursor(0,1); lcd.print(msjHttp); if( (msjHttp[0] == 'O') && (msjHttp[1] == 'K') ) { Serial.println("2- REQUEST: OK detected"); errorFeed = 1; } else { if( (msjHttp[0] == 'K') && (msjHttp[1] == 'O') ) { Serial.println("2- REQUEST: KO detected"); errorFeed = 1; } else { Serial.println("2- REQUEST: msj not valid"); } } } else { Serial.println("REQUEST: Server not respond"); //lcd.clear(); //lcd.print("server"); //lcd.setCursor(0,1); //lcd.print("not respond"); } } } else { // kf you didn't get a connection to the server: Serial.println("REQUEST: connection failed"); lcd.clear(); lcd.print("connection"); lcd.setCursor(0,1); lcd.print("failed"); } /////////////////////////////////////////////////////////////////////////// // CIERRE DE LA CONEXION /////////////////////////////////////////////////////////////////////////// cliente_lector.stop(); /////////////////////////////////////////////////////////////////////////// // RETORNO DE LOS MENSAJES DE ERROR /////////////////////////////////////////////////////////////////////////// return(errorFeed); }