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
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <api batchcomplete=""> <query> <normalized> <n from="automobile" to="Automobile"/> </normalized> <pages> <page _idx="3141765" pageid="3141765" ns="0" title="Automobile"> <extract xml:space="preserve"> Une automobile ou, plus précisément, une voiture automobile, (l'abréviation populaire en « voiture » est assez courante même si ce terme imprécis peut désigner de nombreux types de véhicules qui ne sont pas tous motorisés) est un véhicule automobile à roues propulsé par un moteur et destiné au transport terrestre de personnes, de leurs bagages et de petits objets. L'automobile est un moyen de transport parmi les plus répandus, sa capacité est généralement de deux à cinq personnes, mais peut varier de une à neuf places. L'usage limite l'emploi du terme automobile aux véhicules possédant quatre roues, de dimensions inférieures à celle des autobus et des camions, mais englobe parfois les camionnettes. Bien qu'étant des « véhicules automobiles », les motocyclettes ne sont pas habituellement classées dans cette catégorie. </extract> </page> </pages> </query> </api>
Comment faire la redirection avec ma requette GET Winsock?
Merci
mon code C
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
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
51 int 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); } }
Partager