Hacer un GET a un HTTPS en C
Publicado por Francisco Javier (1 intervención) el 22/08/2020 12:21:29
Tengo el siguiente código que me sirve para ver u obtener una página a una dirección http, pero si la dirección es https, me da el siguiente mensaje:
Connecting...
Connected!
GET Sent...
recv()'d 434 bytes of data in buf
HTTP/1.1 301 Moved Permanently
Date: Sat, 22 Aug 2020 10:15:08 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Sat, 22 Aug 2020 11:15:08 GMT
Location: https://ladireccionX.com/xx/xx
etc...
El codigo:
Que tendría que hacer para recibir la pagina de la dirección https ?
Gracias, y buen día a tod@s
Connecting...
Connected!
GET Sent...
recv()'d 434 bytes of data in buf
HTTP/1.1 301 Moved Permanently
Date: Sat, 22 Aug 2020 10:15:08 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Sat, 22 Aug 2020 11:15:08 GMT
Location: https://ladireccionX.com/xx/xx
etc...
El codigo:
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
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main(void) {
//Stream sockets and rcv()
struct addrinfo hints, *res;
int sockfd;
char buf[2056];
int byte_count;
//get host info, make socket and connect it
memset(&hints, 0,sizeof hints);
hints.ai_family=AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
getaddrinfo("ladireccionX.com","80", &hints, &res);
sockfd = socket(res->ai_family,res->ai_socktype,res->ai_protocol);
printf("Connecting...\n");
connect(sockfd,res->ai_addr,res->ai_addrlen);
printf("Connected!\n");
char *header = "GET /xx/xxxx HTTP/1.1\r\nHost: ladireccionX.com\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)\r\nConnection: keep-alive\r\n\r\n";
send(sockfd,header,strlen(header),0);
printf("GET Sent...\n");
//all right ! now that we're connected, we can receive some data!
byte_count = recv(sockfd,buf,sizeof buf,0);
printf("recv()'d %d bytes of data in buf\n",byte_count);
printf("%s",buf);
return 0;
}
Que tendría que hacer para recibir la pagina de la dirección https ?
Gracias, y buen día a tod@s
Valora esta pregunta
0