Buen dia estoy desarrollando un pequeño servidor en C para un proyecto que tengo.
Ya tengo buena parte trabajado, pero me gustaria consultarles si existen mas cosas que deba de validar en una peticion GET el ejemplo que mas o menos tengo del codigo es el siguiente:
Estoy releyendo el protocolo del HTTP y estoy validando de momento solo la primera LINEA de la peticion.
Saludos!
Ya tengo buena parte trabajado, pero me gustaria consultarles si existen mas cosas que deba de validar en una peticion GET el ejemplo que mas o menos tengo del codigo es el siguiente:
Código (c) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define KB 1024
int main() {
char *type,*resource,*protocol,*extra,*hasQuery,**values = NULL,*key,*value,*aux;
int values_count= 0,i;
char *temp = malloc(KB);
strcpy(temp,"GET /LALALA/xD.txt?q=xD&XD HTTP/1.1");
type = strtok(temp," ");
resource = strtok(NULL," ");
protocol = strtok(NULL," ");
extra = strtok(NULL," ");
printf("type = %p: %s\n",type,type);
printf("resource = %p: %s\n",resource,resource);
printf("protocol = %p: %s\n",protocol,protocol);
printf("extra = %p\n",extra);
hasQuery = strstr(resource,"?");
if(hasQuery) {
printf("query = %p: %s\n",hasQuery,hasQuery);
aux = strtok(hasQuery+1,"&");
do {
if(aux) {
values = realloc(values,sizeof(char*)*(values_count+1));
values[values_count] = aux;
printf("values: %s\n",values[values_count]);
values_count++;
}
aux = strtok(NULL,"&");
}while(aux);
i = 0;
while(i < values_count) {
key = strtok(values[i],"=");
value = strtok(NULL,"");
//Aqui salvo los valores key y value para su posterior uso
printf("Key: %s\nValue: %s\n",key,value);
i++;
}
}
else
printf("query = %p\n",hasQuery);
if(values)
free(values);
if(temp) {
free(temp);
}
}
Estoy releyendo el protocolo del HTTP y estoy validando de momento solo la primera LINEA de la peticion.
Saludos!