suis en train d'implémenter une requête http (GET request) sur la programmation c qui inclut un en-tête d'autorisation mais le problème est que je ne peux pas obtenir le 200 ok, communication (le serveur répond avec l'autorisation 401 requise) mais pas plus que cela.mettre en œuvre l'en-tête d'autorisation http dans c
**while(1){
strcpy(buffer,"GET /mywebsite/login.html/ HTTP1.1 \n\n");
strcat(buffer,"Host: localhost\n\n");
strcat(buffer,"Connection: keep-alive\n\n");
strcat(buffer,"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11\n\n");
strcat(buffer,"Accept: text/html,application/xhtml+xml,application/xml;q=0.9;q=0.8\n\n");
strcat(buffer,"Accept-Encoding: gzip,deflate,sdch\n\n");
strcat(buffer,"Accept-Language: en-US,en;q=0.8\n\n");
strcat(buffer,"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\n\n");
status = send(sock, buffer, strlen(buffer), 0);
if(status == -1) {
printf("Error in send(). Error code: %d\n", WSAGetLastError());
continue;
}
buffer[0]='\0';
//The receiving functions
status = recv(sock, buffer, BUFFER_SIZE, 0);
if (status == -1) {
printf("Error in recv(). Error code: %d\n", WSAGetLastError());
continue;
}
buffer[status] = '\0';
printf("The message received is: ");
printf("%s\n\n", buffer);
strcpy(buffer,"GET /mywebsite/login.html/ HTTP1.1\n\n");
strcat(buffer,"Host: localhost\n\n");
strcat(buffer,"Authorization: Basic QWRtaW46MTIzNA== \n\n");
strcat(buffer,"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11\n\n");
strcat(buffer,"Accept: text/html,application/xhtml+xml,application/xml;q=0.9;q=0.8\n\n");
strcat(buffer,"Accept-Encoding: gzip,deflate,sdch\n\n");
strcat(buffer,"Accept-Language: en-US,en;q=0.8\n\n");
strcat(buffer,"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\n\n");
strcat(buffer,"Connection: keep-alive\n\n");
status = send(sock, buffer, strlen(buffer), 0);
if(status == -1) {
printf("Error in send(). Error code: %d\n", WSAGetLastError());
continue;
}
buffer[0]='\0';
//The receiving functions
status = recv(sock, buffer, BUFFER_SIZE, 0);
if (status == -1) {
printf("Error in recv(). Error code: %d\n", WSAGetLastError());
continue;
}
buffer[status] = '\0';
printf("%s\n\n", buffer);
buffer[0]='\0';
}**
la première tête est envoyé avec succès, mais l'en-tête suivant où le serveur ne rien faire garder (pas de réponse) plaît peu d'aide ici je n'ai pas la moindre idée de ce que le problème est ... :(
Vous devez vous assurer que vous pouvez effectuer la demande manuellement (c'est-à-dire écrire manuellement les requêtes HTTP). Puis comparez-les au texte que votre code produit. –
Et si cela fonctionne, essayez d'utiliser un outil comme Fiddler pour voir le trafic. – Pete