我曾经在C#中使用过POST和GET,但是尝试在C中实现它对我来说有点令人困惑。

我已经使用本地计算机上的8443端口成功连接到套接字。

现在,我尝试发送一个带有3个参数的POST请求到127.0.0.1:8443/xxxx/xxxAPI URL。

通常在GET中,我可以将查询字符串附加在URL本身中...但是在POST中,我需要一个消息正文,contentHeader,Type等,然后是我的参数。

我在C语言中有一个自定义TCP代码,可以帮助我连接到服务器。成功建立连接后,我将尝试执行以下伪代码...。但是显然我不知道我在做什么...有人可以指导我吗?

            sprintf(szBuff, "POST /xxxx/xxxxxxAPI HTTP/1.1\r\n");
            sprintf(contentHeader, "Content-Length: %d\r\n", 20);

            send(iSock, szBuff, strlen(szBuff), 0);
            send(iSock, "Accept: */*\r\n", 15, 0);
            send(iSock, "User-Agent: Mozilla/4.0\r\n", 27, 0);
            send(iSock, contentHeader, strlen(contentHeader), 0);
            send(iSock, "Accept-Language: en-us\r\n", 26, 0);
            send(iSock, "Accept-Encoding: gzip, deflate\r\n", 34, 0);
            send(iSock, "Host: ", 6, 0);
            send(iSock, "hostname", 8, 0);
            send(iSock, "\r\n", 4, 0);
            send(iSock, "Content-Type: application/x-www-form-urlencoded\r\n", 50, 0);
            send(iSock, "\r\n", 4, 0);
            send(iSock, "\r\n", 4, 0);
            send(iSock, parameters, strlen(parameters), 0);
            send(iSock, "\r\n", 4, 0);
            /*if (write(iSock, szBuff, sizeof(szBuff)) == -1)
                LogToFile("Error while request being sent to the server");*/

最佳答案

我建议使用类似libcurl的库

07-26 00:18
查看更多