c语言的字符串api,C语言实现GET请求调用API

本文介绍了如何使用C语言实现HTTP GET请求,详细讲解了HTTP协议的基础知识,并给出了构建请求报文和处理响应报文的示例,特别以腾讯地图API为例,展示了完整的C语言代码实现。
摘要由CSDN通过智能技术生成

使用 python 可以很容易地实现简单的 HTTP 请求,因为系统库封装了构建 HTTP 请求报文的底层操作,面向用户的是简单地函数调用,而通过 C语言 实现 HTTP 请求必须了解 HTTP 协议的原理,这里推荐经典的 《HTTP权威指南》 和入门的 《图解HTTP》

HTTP协议简介

HTTP报文分为请求报文和响应报文,报文分为三个部分:起始行,首部块和正文主题,这里着重谈谈请求报文的构建

另外,使用浏览器的调试工具->网络选项也能直观地分析每个HTTP请求的特征

jIzamqb.png!web

C实现HTTP请求的细节

F36vEzb.png!web

请求报文

请求报文的格式如下:

method 代表对 服务器 资源获取的动作,常见的有 get 和 post 。

requests-URL 代表请求的统一资源定位符,也就是完整的网页链接。

version 是 HTTP 版本,目前已 HTTP1.1 最为常见。

headers 表示请求报文的首部,常见的防盗链 refer ,浏览器信息 user-agent 等等都在这里定义,注意这里的每一项属性参数以每行末尾的 \n\r 来分隔。

响应报文

和请求报文类似,只介绍其独特的地方

status 和 reason-phrase 表示状态码和原因短语,比较常见的就是 200 OK , 404 Not Found , 502 Bad Gateway

entire body 报文的实体部分,一般来说就是发往浏览器的整个 HTML 文件,当然还有图片,二进制文件等等其他一些资源。

GET请求

创建socket

//定义的缓冲区用来存放socket发送和接受的数据 也就是HTTP请求和响应报文

char buff[2048];

int sockfd = socket( AF_INET, SOCK_STREAM, 0 );

if ( sockfd < 0 )

{

printf( "create socket error!\n" );

exit( -1 );

}

struct sockaddr_in serveraddr;

memset( &serveraddr, 0, sizeof(serveraddr) );

serveraddr.sin_family = AF_INET;

// HTTP服务 TCP 80端口

serveraddr.sin_port = htons( 80 );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值