c 服务器对post请求响应,简单C执行HTTP POST并使用响应的示例

本文档展示了如何使用C语言编写程序来发送HTTP POST请求。通过创建套接字、填充参数、连接到服务器、发送请求和接收响应,详细解释了实现过程。示例代码包含了处理GET和POST请求的方法,并提供了命令行参数来指定请求类型、路径、头部和正文内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

消息具有标题部分和由空行分隔的消息正文。即使没有消息正文,也总是需要空白行。标题以命令开头,并且具有由冒号和空格分隔的其他键值对。如果有一个消息体,它可以是您想要的任何内容。

标题中的行和标题末尾的空白行必须以carraige返回和换行符对结束(请参阅HTTP标题行中断样式),这就是为什么这些行在末尾有\ r \ n的原因。

URL的格式为 http://host:port/path?query_string

向网站提交请求有两种主要方式:GET:查询字符串是可选的,但如果指定,则必须相当短。因此,标题可能只是GET命令而没有别的。示例消息可以是:GET /path?query_string HTTP/1.0\r\n

\r\n

POST:通常在查询字符串中的内容是在邮件正文中。因此,标头需要包含Content-Type:和Content-Length:属性以及POST命令。示例消息可以是:POST /path HTTP/1.0\r\nContent-Type: text/plain\r\nContent-Length: 12\r\n

\r\n

query_string

所以,回答你的问题:如果您对POSTing to感兴趣的URL是http://api.somesite.com/apikey=ARG1&command=ARG2那么没有正文或查询字符串,因此没有理由发布POST,因为那里没有什么可以放在消息的正文中,所以没有什么可以放在Content-Type:和Content-Length中:

如果你真的想,我猜你可以发帖。在这种情况下,您的消息将如下所示:POST /apikey=ARG1&command=ARG2 HTTP/1.0\r\n

\r\n

所以要发送C程序需要的消息:创建一个套接字

查找IP地址

打开插座

发送请求

等待回应

关闭插座

发送和接收呼叫不一定发送/接收您提供的所有数据 - 它们将返回实际发送/接收的字节数。您可以在循环中调用它们并发送/接收消息的其余部分。

我在这个示例中没有做的是任何类型的真实错误检查 - 当出现故障时我只退出程序。请让我知道这对你有没有用:#include  /* printf, sprintf */#include  /* exit */#include  /* read, write, close */#include  /* memcpy, memset */#include  /* socket, connect */#include  /* struct sockaddr_in, struct sockaddr */#include  /* struct hostent, gethostbyname */void error(const char *msg) { perror(msg); exit(0); }int main(int argc,char *argv[]){

/* first what are we going to send and where are we going to send it? */

int portno =        80;

char *host =        "api.somesite.com";

char *message_fmt = "POST /apikey=%s&command=%s HTTP/1.0\r\n\r\n";

struct hostent *server;

struct sockaddr_in serv_addr;

int sockfd, bytes, sent, received, total;

char message[1024],response[4096];

if (argc  "); exit(0); }

/* fill in the 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值