在上面的get的基础上进行了一定的修改,实现了post的功能
在此使用的body数据格式为json数据,可以更具自己的情况进行一定的修改
- post的请求函数,通过socket发送url,与body
void send_http_post_request(int sockfd, const char *host, const char *path, const char *body) {
char request[MAX_SIZE];
// 注意数据
sprintf(request, "POST %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Content-Type: application/json\r\n"
"Content-Length: %ld\r\n"
"\r\n"
"%s",
path, host, strlen(body), body);
if (write(sockfd, request, strlen(request)) < 0) {
error("Error writing to socket");
与上面get的区别仅仅只有path进行了一定的接口和增加了json格式的body数据
const char *path = "/socket/main/post";
char *body= malloc(256);
sprintf(body, "{"
"\"name\":\"%s\","
"\"id\":%d,"
"\"age\":%d"
name,id,age);
// 发送HTTP post请求
send_http_post_request(sockfd, host, path, (const char *)data);
// 接收并打印HTTP响应
receive_http_response(sockfd);
// 接收数据
这是一个linux下使用C的标准socket,进行http访问的例子。通过socket发送get请求,从中国天气网获得指定城市的天气。
该例子在ubuntu 14.04和AM3358的嵌入式linux3.14下实际测试可用。
如果需要在嵌入式linux下使用,需要修改Makefile文件的CC和LINK项,指向相应的交叉编译器。
C语言发送http请求和普通的socket通讯,原理是一样的.无非就三步connect()连上服务器,send()发送数据,recv()接收数据.只不过发送的数据有特定的格式.下面的是简单发送一个http请求的例子#include <netinet/in.h>
#include <sys/socket.h>
#include <netdb.h>#include <unistd.h>
#include
此代码演示了如何使用C语言创建一个简单的HTTP请求,并接收服务器的响应。
首先,使用 socket() 函数创建套接字,然后使用 connect() 函数连接到服务器。
然后,使用 send() 函数发送HTTP请求到服务器。
最后,使用 recv() 函数接收服务器的响应,并将其打印出来。
在接收响应时,我们使用循环来接收所有数据,直到 recv() 返回0,表示服务器关闭了连接。
最后,使用 close() 函数关闭套接字,释放资源。