POCO库下访问http获取json串

来源:互联网 发布:access与sql的区别 编辑:程序博客网 时间:2024/04/28 03:13

1.首先需要去官网下载POCO库,地址点击打开链接

2.根据不同的VS版本编译POCO库,将生成的incude头文件、bin文件和lib文件拷到VS目录下就可进行编译

(这是官网的文档,可参考下点击打开链接)

下面是具体的代码(包括数据的获取和解析):

#include "stdafx.h"#include <iostream>#include "Poco/Net/HTMLForm.h"#include "Poco/URI.h"#include "Poco/Net/HTTPClientSession.h"#include "Poco/Net/HTTPRequest.h"#include "Poco/Net/HTTPResponse.h"#include "Poco/StreamCopier.h"#include "Poco/Net/NetException.h"#include "Poco/JSON/Object.h"#include "Poco/JSON/Parser.h"#include "Poco/Dynamic/Var.h"#include "Poco/ASCIIEncoding.h"#include "Poco/UTF8Encoding.h"#include "Poco/UTF16Encoding.h"#include "Poco/TextConverter.h"#include <iostream>#include <sstream>using namespace::Poco::JSON;int _tmain(int argc, _TCHAR* argv[]){Poco::URI purl("");//输入要访问的Urltry{Poco::Net::HTTPClientSession session(purl.getHost(), purl.getPort());Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, purl.getPath(), Poco::Net::HTTPMessage::HTTP_1_1);Poco::Net::HTMLForm form;//创建一个表单//form.add("channel", "cctv1");// Send the request.form.prepareSubmit(req);std::ostream& ostr = session.sendRequest(req);form.write(ostr);//提交post的键值信息Poco::Net::HTTPResponse res;std::istream& istr = session.receiveResponse(res);//上句接收网站回应的信息 返回输入流 并copy到标准控制台输出流//Poco::StreamCopier::copyStream(istr, std::cout);std::string temp;Poco::StreamCopier::copyToString(istr, temp);std::cout << temp << std::endl; //将返回结果输出//解析字符串,下面的data和title要根据JSON数据选择Parser parser;Poco::Dynamic::Var result = parser.parse(temp);Poco::JSON::Object::Ptr object = result.extract<Object::Ptr>();Poco::Dynamic::Var test = object->get("data"); Object::Ptr secobject = test.extract<Object::Ptr>();Poco::Dynamic::Var name = secobject->get("title");const std::string nameStr = name.toString();std::cout << nameStr << std::endl;}catch (Poco::Net::NetException& ex){std::cout << "post wrong: " << ex.displayText();}system("PAUSE");return 0;}









0 0
原创粉丝点击