我没啥好抄的,
https://www.codeproject.com/articles/252566/learning-poco-get-with-http
#include <Poco/Net/HTTPClientSession.h>
#include <Poco/Net/HTTPRequest.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/StreamCopier.h>
#include <Poco/Path.h>
#include <Poco/URI.h>
#include <Poco/Exception.h>
#include <iostream>
#include <string>
using namespace Poco::Net;
using namespace Poco;
using namespace std;
int main(int argc, char **argv)
{
if (argc != 2)
{
cout << "Usage: " << argv[0] << " <uri>" << endl;
cout << " fetches the resource identified by <uri> and print it" << endl;
return -1;
}
try
{
// prepare session
URI uri(argv[1]);
HTTPClientSession session(uri.getHost(), uri.getPort());
// prepare path
string path(uri.getPathAndQuery());
if (path.empty()) path = "/";
// send request
HTTPRequest req(HTTPRequest::HTTP_GET, path, HTTPMessage::HTTP_1_1);
session.sendRequest(req);
// get response
HTTPResponse res;
cout << res.getStatus() << " " << res.getReason() << endl;
// print response
istream &is = session.receiveResponse(res);
StreamCopier::copyStream(is, cout);
}
catch (Exception &ex)
{
cerr << ex.displayText() << endl;
return -1;
}
return 0;
}
另一个例子,大同小异:
使用Poco库建立Http Server
poco.cc
#include <Poco/Net/ServerSocket.h>
#include <Poco/Net/HTTPServer.h>
#include <Poco/Net/HTTPRequestHandler.h>
#include <Poco/Net/HTTPRequestHandlerFactory.h>
#include <Poco/Net/HTTPResponse.h>
#include <Poco/Net/HTTPServerRequest.h>
#include <Poco/Net/HTTPServerResponse.h>
#include <Poco/Util/ServerApplication.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
using namespace Poco::Net;
using namespace Poco::Util;
class MyRequestHandler : public HTTPRequestHandler
{
public:
virtual void handleRequest(HTTPServerRequest &req, HTTPServerResponse &resp)
{
resp.setStatus(HTTPResponse::HTTP_OK);
resp.setContentType("text/html");
ostream & out = resp.send();
out << "<h1>Hello World!</h1>";
}
};
class MyRequestHandlerFactory : public HTTPRequestHandlerFactory
{
public:
virtual HTTPRequestHandler* createRequestHandler(const HTTPServerRequest &)
{
return new MyRequestHandler;
}
};
class MyServerApp :public ServerApplication
{
protected:
int main(const vector<string> &)
{
HTTPServer s(new MyRequestHandlerFactory, ServerSocket(8080), new HTTPServerParams);
s.start();
cout << endl << "Server started" << endl;
waitForTerminationRequest(); // wait for CTRL-C or kill
cout << endl << "Shutting down..." << endl;
s.stop();
return Application::EXIT_OK;
}
};
int main(int argc, char **argv)
{
MyServerApp app;
return app.run(argc, argv);
}
编译:
g++ -o poco poco.cc -lPocoNet -lPocoFoundation -lPocoUtil
其他库:mongoose
C++实现轻量级极简httpserver和httpclient(提供http和websocket接口)