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

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

HTTP协议简介

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

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

C实现HTTP请求的细节

请求报文

请求报文的格式如下:

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 );

你可能感兴趣的:(c语言的字符串api)