Problemas con GPS y GPRS

Hola a todos, queria saber si alguno me puede dar una mano con esto. Tengo un proyecto que envia por GPRS a un servidor apache, los datos del GPS. Tanto el GPS como el GPRS estan en un Shield Sim808.

En el sketch si pongo esto:

char http_cmd[] = "GET /insertar.php?data2=34.28310&data3=8010&data4=333 HTTP/1.0\r\n\r\n";

Funciona perfecto

Ahora, si reemplazo los valores de data2 por el valor del GPS de la siguiente forma

strcpy (http_cmd, "GET /insertar.php?data2=");
strcat (http_cmd, val1);
strcat (http_cmd, "&data3=8010&data4=333 HTTP/1.0\r\n\r\n");
strcat (http_cmd, "\0");

Me muestra bien por consola la composicion de la peticion, pero en el apache, llega incorrectamente, ya que me devuelve un error 408.

Podran darme una mano, para ver en que estoy fallando?

Gracias

Lee las normas del foro y edita tu post de modo que cuando postees códigos, debes hacerlo con etiquetas, no como ahora que esta como texto plano.
Mira otros hilos y entenderás.
Normas del foro, 1er hilo de cada sección.

solo para descartar algo que he usado antes y con buenos resultados.
Usa sprintf() y armas todo rapidamente.

char str[9];
char* dtostrf(float number, int tamanyo, int decimales, char* buffer);
/*                    |         |             |               \_ buffer donde almacenaremos la cadena
                      |         |             \_ Precisión (nº decimales)
                      |         \_Tamaño del número en carácteres
                      \_ Número a convertir
*/

dtostrf(val1, 8, 5, str);
sprintf(http_cmd, "GET /insertar.php?data2=%s&data3=8010&data4=333 HTTP/1.0\r\n\r\n", val1);

NOTA: observa como muestro los códigos.

En http_cmd tendras lo que buscas.
Prueba a ver si funciona bien?