使用Poco库编写一个简单的http客户端原理
来源:互联网 发布:ps淘宝调色 编辑:程序博客网 时间:2024/05/29 17:39
1. 发起一个GET请求
//使用给定的服务器ip 和端口实例化一个http客户端类,但并没建立连接.
HTTPClientSession session(hostIP, Port);
//建立一个请求类,但也没有真正连接,path是请求的路径,如果请求http://192.168.4.19:8000/radapi10/userauth.htm那么这时string path=/radapi10/userauth.htm
HTTPRequest request(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
//创建一个类接收返回的数据
HTTPResponse response;
//发起post请求,这时才真正开始建立连接,所是有可能会抛Poco::Exception
session.sendRequest(request);
//接收服务器反回的数据
std::istream& rs = session.receiveResponse(response);
//取得返回响应码及对应的解释信息如:200 OK/401 Unauthorized:请求未经授
std::cout << response.getStatus() << " " << response.getReason()<< std::endl;
//把数据从服务器响应的数据流里读取出来,这里是定到显示器,应该也可以写到文件或其它流,但没有试过。
StreamCopier::copyStream(rs, std::cout);
//一个完整的会话结束,如果没有exception发生,所有session/request/response都可以循环使用。如果发生了则要调用 session.reset()关闭套按字。
2. 发起一个POST请求.
//使用给定的服务器ip 和端口实例化一个http客户端类,但并没建立连接.
HTTPClientSession session(hostIP, Port);
//建立一个请求类,但也没有真正连接,path是请求的路径,如果请求http://192.168.4.19:8000/radapi10/userauth.htm那么这时string path=/radapi10/userauth.htm
HTTPRequest request(HTTPRequest::HTTP_POST, path, HTTPMessage::HTTP_1_1);
//设置内容编码,纯文本格式,也可以设置为JSON,text/xml等
request.setContentType("application/x-www-form-urlencoded");
//设置内容的长度,mystr是我们要发送的字串
request.setContentLength( (int)mystr.length() );
//取得服务器io流,发送出去
std::ostream& send = session.sendRequest(request);
send <<mystr<<flush;//发送出去
//取得服务器返回的流,并读出其中数据
std::istream& res = session.receiveResponse(response);//receiveResponse(...)返回一个输入流的引用,用法见下句
res.read(buffer,1024);//buffer为数据缓冲区
Cout<<buffer<<endl;
l POST和GET一样,session,request和response都是可以循环使用的。
l 注意:sendRequest和receiveResponse才是真正连接服务器,所以是有可能会抛Poco::Exception
l virtual std::ostream& sendRequest(HTTPRequest& request);
把http请求头发送到session指定的服务器.HTTPClientSession会设置好主机名keep-alive属性。返回的ostream直到receiveResponse()调用或者session销毁前都是可用的。
l void reset();
重置会话session并且关闭socket,即使设置了长连接下一次请求(sendRequest)也会重新建立连接.
如果你想循环使用某个session,或者保持长连接,那么在receiveResponse()和sendRequest()发生抛出异常或相应的流不可用时请调用此函数。如果不再使用这个会话,可以不用管它。
- 使用Poco库编写一个简单的http客户端原理
- POCO::Net 简单的HTTP客户端,服务器程序
- Poco库实现简单的http服务器
- Poco库http客户端代码
- 使用poco库搭建简单http服务器实现hello world
- POCO库的使用
- Poco教程(一):使用Poco库建立Http Server
- 一个简单的Http客户端Demo
- c#编写一个简单的http服务器
- 编写了一个简单的http代理服务器
- 使用Jsoup作为简单的http客户端
- poco 简单使用演示
- 一个简单的linux下的服务器+客户端的编写
- 简单的http客户端
- http服务-建立一个简单http客户端
- poco库的简单实现单元测试
- 使用libcurl库编写HTTP客户端(包括GET/POST/HTTPS)
- C# 编写的一个简单的 HTTP 服务器
- (素材源码)猫猫学IOS(十三)UI之UITableView学习(下)汽车名牌带右侧索引
- php数组去重 (转
- Next Permutation
- Android 学习笔记 Contacts ContentResolver query、add、update、delete 参数详解
- ubuntu 网络配置
- 使用Poco库编写一个简单的http客户端原理
- 真TM通俗易懂(链表、指针)
- SQL解析过程
- How to solve “Dynamic Web Module 3.1 requires Java 1.7 or newer” in Eclipse
- mysql分区基础操作
- Java中,if-else if- else语句执行流程
- Arm7 内核结构图
- Comparable<T>接口实现
- HDOJ1006 Tick and Tick题解