Bonjour!
Voila j'essaye de récupérer les définitions de wikipedia grace a un GET avec winsock.
Si je tape sous un navigateur "fr.wikipedia.org/w/api.php?format=xml&action=query&prop=extracts&redirects&exintro=&explaintext=&titles=automobile" je récupère bien la definition de "automobile"
mais avec mon GET le serveur me renvois HTTP/1.1 301 TLS Redirect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
Comment faire la redirection avec ma requette GET Winsock?
Merci
mon code C
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51int result; WSADATA WsaDat; SOCKET theSocket; ADDRINFO hints; ADDRINFO* pResult; sockaddr_in servAddr{ 0 }; char recvBuf[4096]; string request; string Host = "fr.wikipedia.org"; string Buffer; request = "GET /w/api.php?format=xml&action=query&prop=extracts&redirects&exintro=&explaintext=&titles=automobile HTTP/1.1\r\n"; request += "Host: fr.wikipedia.org\r\n"; request += "Connection: clode\r\n\r\n"; WSAStartup(MAKEWORD(2, 2), &WsaDat); memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_ALL; hints.ai_family = PF_INET; hints.ai_protocol = IPPROTO_IPV4; getaddrinfo(Host.c_str(), nullptr, &hints, &pResult); servAddr.sin_family = AF_INET; servAddr.sin_addr.S_un.S_addr = *((ULONG*)&(((sockaddr_in*)pResult->ai_addr)->sin_addr)); servAddr.sin_port = htons(80); theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); connect(theSocket, (struct sockaddr*)&servAddr, sizeof(servAddr)); send(theSocket, request.c_str(), request.length(), 0); while (true) { result = recv(theSocket, recvBuf, 4096, 0); if (result == 0) { cout << "Récuperation Wiki" << "\n"; break; } else { Buffer.append(recvBuf, result); } }

 

 
		
		 
         
 

 
			
			
 
   
 


 winsock GET API Wikipedia
 winsock GET API Wikipedia
				
 Répondre avec citation
  Répondre avec citation


 
			 
						
Partager