How do you receive a status code from HTTP using libogc?

85 Views Asked by At

So, I've been working on a Wii application. I want it to connect to my server and receive a status code response. I wrote the following code to try to do so(yeah, it's messy, I know)

s32 connectSocket(const char *hostn, u32 port) {
    int sock = net_socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

    char buffer[1024];
    struct sockaddr_in connect_addr;    

    if (sock == INVALID_SOCKET) {
        printf("[err] Cannot create a socket.\n");
    } else { 
        struct hostent *host = 0;
        host = net_gethostbyname(hostn);
        if (host == NULL) return -2;

        connect_addr.sin_family = AF_INET;
        connect_addr.sin_port = port;
        memcpy(&connect_addr.sin_addr, host->h_addr_list[0], host->h_length);
        if (net_connect(sock, (struct sockaddr*)&connect_addr, sizeof(connect_addr)) == -1) {
            net_close(sock);
            return -3;
        }
    }
    
    printf("Sending get request...\n");
    int bytesTransferred = 0;
    char *getRequest = "GET /test/ HTTP/1.1";
    bytesTransferred = net_send(sock, getRequest, strlen(getRequest), 0);
    printf("Transferred: %d\n",bytesTransferred);

    for (int i = 0; i < 1024;) {
        bytesTransferred = net_recv(sock, &buffer[i], 1, 0);
        printf("Received: %d\n", bytesTransferred);
    }

}

The output of said code is:

Sending get request...
Transferred: -7
Received: 0
Received: 0
Received: 0
(etc)

I don't know where to begin. Can someone help me out?

0

There are 0 best solutions below