C++HTTP请求学习(一)(从注销的账号转移过来)
简述:最近在找一个C++封装的http请求库进行学习,也打算根据开源库封装一个自己项目可能使用的一个通用帮助类库,所以找到了ic-client。ic-client是基于libcurl封装的一个开源项目。下面简单介绍一下ic client的功能和Http请求的状态码。
一、ic client介绍
ic client基于libcurl库封装了相关的http请求接口。libcurl是通过C++11实现的,支持跨平台。从项目的使用上来看,这个库(libcurl)还是比较成熟的,性能和代码可读性都比较好。
ic client的功能:
- HTTP、POST、PUT、DELETE、HEAD请求
- 是否重定向,及重定向最大次数
- 超时(毫秒)
- SSL证书和密钥
- 验证HTTPS请求对象的合法性
- HTTP(s)代理
- 接受的内容编码方式 (Accept-Encoding)
- Cookie
- Post请求数据(可设置MIME类型)
- 自定义传输进度处理(例如下载进度条)
- 文件下载(普通下载、断点续传、分片下载)
- 限制下载/上传速度
二、HTTP请求状态码
(一)1XX - 信息响应
状态码 | 描述 | 含义 |
---|---|---|
100 | Continue | 服务器已收到请求的开头部分,客户端应继续发送其余部分。 |
101 | Switching Protocols | 服务器已理解客户端的请求,并将切换协议。 |
102 | Processing | 服务器已收到并正在处理请求,但尚未完成。 |
103 | Early Hints | 服务器返回一些响应头,以便客户端开始预加载资源。 |
(二)2XX - 成功
状态码 | 描述 | 含义 |
---|---|---|
200 | OK | 请求成功。对GET请求,响应将包含对应请求的实体。 对POST请求,响应将包含描述或包含该操作结果的实体。 |
201 | Created | 请求已成功,并因此创建了一个新的资源。 |
202 | Accepted | 服务器已接受请求,但尚未处理。 |
203 | Non-Authoritative Information | 服务器已成功处理了请求,但返回了可能来自另一来源的信息。 |
204 | No Content | 服务器成功处理了请求,但未返回任何内容。 |
205 | Reset Content | 服务器成功处理了请求,但未返回任何内容。 与204响应不同,此响应要求请求者重置文档视图。 |
206 | Partial Content | 服务器已成功处理了部分GET请求。 |
(三)3XX - 重定向
状态码 | 描述 | 含义 |
---|---|---|
300 | Multiple Choices | 针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。 |
301 | Moved Permanently | 请求的网页已永久移动到新位置。 |
302 | Found | 请求的网页已临时移动到新位置。 |
303 | See Other | 服务器已理解请求,但需要进一步的信息来完成请求。 |
304 | Not Modified | 自从上次请求后,请求的网页未修改过。 |
305 | Use Proxy | 请求者只能使用代理访问请求的网页。 |
307 | Temporary Redirect | 服务器目前从不同位置的不同URL响应请求,但请求者应继续使用原有位置来进行以后的请求。 |
(四)4XX - 客户端错误
状态码 | 描述 | 含义 |
---|---|---|
400 | Bad Request | 服务器无法理解请求的格式,客户端不应再次尝试该请求。 |
401 | Unauthorized | 请求需要用户的身份认证。 |
403 | Forbidden | 服务器理解请求,但拒绝执行它。 |
404 | Not Found | 服务器找不到请求的网页。 |
405 | Method Not Allowed | 禁用请求中指定的方法。 |
406 | Not Acceptable | 无法使用请求的内容特性响应请求的网页。 |
407 | Proxy Authentication Required | 此状态码类似于401(Unauthorized),但指定请求者应当授权使用代理。 |
408 | Request Timeout | 服务器等候请求时发生超时。 |
409 | Conflict | 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。 |
410 | Gone | 如果请求的资源已永久删除,服务器就会返回此响应。 |
(五)5XX - 服务器错误
状态码 | 描述 | 含义 |
---|---|---|
500 | Internal Server Error | 服务器遇到错误,无法完成请求。 |
501 | Not Implemented | 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。 |
502 | Bad Gateway | 服务器作为网关或代理,从上游服务器收到无效响应。 |
503 | Service Unavailable | 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。 |
504 | Gateway Timeout | 服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
505 | HTTP Version Not Supported | 服务器不支持请求中所用的HTTP协议版本。 |