Enviar un array con GET

Hola de nuevo,

Tengo una duda en relación a las posibilidades de la petición GET a un servidor php. Hasta ahora he podido enviar variables con mi shield Ethernet sin problemas:

int prueba=1;
client.println("GET /consulta1.php?iden="+String(prueba)+" HTTP/1.0");

Pero no consigo enviar un array de tipo char con tamaño de 6 variables. He buscado información al respecto pero sólo he encontrado una respuesta que no es muy alentadora; y es que no se puede enviar un array a un campo del formulario de un servidor.

¿Es eso cierto?

Gracias de antemano.

Para enviar varias variables con get seria asi
Consulta1.php?var1=""&var2=""&var3=""
Osea la primera con un ? Y el resto con &.
Pruebalo a ver q tal.

Hola riscking

La cuestión es que debo enviar o bien el array o bien una serie de variables al campo "iden" del formulario:

char array[]={1, 10, 101, 144, 99, 157};
client.println("GET /search.php?iden="+String(array)+" HTTP/1.0");

Así sé que es una burrada escribirlo así XD pero en principio no sé como se escribe y es para dar a entender lo que pretendo conseguir. He probado lo que me has dicho de esta manera:

client.println("GET /consulta1.php?iden="?digito1=""&digito2=" HTTP/1.0");

y también así

client.println("GET /consulta1.php?iden="+digito1+""+digito2+" HTTP/1.0");

Pero los errores que me da el compilador son los siguientes:

invalid operands of types 'const char[1] and 'int' to binary 'operator&'

He probado con esta sintaxis y no me da error al compilar, pero luego en el serial no me aparece nada del println

Serial.println("GET /consulta1.php?iden="?digito1+"":digito2+" HTTP/1.0");

Ahora mismo no dispongo del servidor para probarlo, pero creo que es así:

client.print("GET /consulta1.php?iden="); //enviamos la peticion al servidor
  client.print(digito1);
  client.print(digito2);
  client.print(digito3);
  client.print(digito4);
  client.print(digito5);
  client.println(" HTTP/1.0");

Al menos, en el serialmonitor me aparece lo que busco:

GET /consulta1.php?iden=110101144168 HTTP/1.0

En cuanto sepa si funciona, lo posteo.
Saludos!

Funciona! XD

hola zEtA.

he intentado enviar un string y un char array asi como dices y no funciona. mi intencion es enviar un array tipo char y recibirlo en un servidor php, (en teoría si lo que tu dices funciona debería recibir con una única orden client.print("/GET/miprograma.php/dato=?array HTTP /1.1");

Edito: me refiero a que al otro lado en el servidor, ¿que esta esperando? $variable=$_GET[array];???????? o al enviar asi estas enviando byte a byte el array??????

Disculpas si planteo tonterias pero no nací sabiendo :slight_smile:

Gracias

No se puede enviar un array tal cual en html. Debes descomponerlo, enviarlo, y recomponerlo en el servidor. Crea una cadena con un carácter separador. Prueba tal que así, suponiendo que quieres enviar un array de 6 cadenas y que no tienes previsto usar el carácter guión:

char *iden[]={"esto","es","un","array","de","cadenas"};
Serial.print("GET /consulta1.php?iden="); //enviamos la peticion al servidor
for (int i=0;i<6;i++){
  if (i>0) Serial.print("-");
  Serial.print(iden[i]);
}
Serial.println(" HTTP/1.0");

Esto debería dar por el monitor (no lo heprobado) algo así como
Get /consulta1.php?iden=esto-es-un-array-de-cadenas HTTP/1.0
Si es así, modifica Serial por client, y a ver qué tal. En el servidor php puedes reconstruir el array con
$miarray=explode("-", $_GET['iden']);
La cosa se complica si vas a enviar caracteres "raros" o el propio caracter separador, en cuyo caso tendrás que recurrir a trucos para codificarlos en arduiono y descodificarlos en el php.

gracias noter....el array es mucho mas sencillo..se trata de arrays de longitud variable tipo char, y como si fuera hexadecimal, porque los unicos char qeu habrán en el array son 0-9,A-F.

poniendo el array a pelo va fantastico porque el server php ya espera la variable como dije $variable="$GET[1234567890ABCDEF]"

sigo probando a ver y os cuento

teniais razon gente!!!!!! funcionaaaaaaa

char array[]="B8F9:34:9de2b4";
Serial.println("connecting...");
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.print("GET /mac_server2.php?data_in="); // mi fallo era que aqui estaba escribiendo
//client.println("GET /mac_server2.php?data_in=");
// jaaaaaarrrrl!!!!
for(int i=0;i<sizeof(array);i++){
client.print(array*);*

  • }*
  • client.print("HTTP/1.0");*
  • client.println();*
    [/quote]
    y por el ladod e php el array lo coge simplemente sin formularios ni nada
    > $data_in = $_GET["data_in"];