Tworzę serwer http za pomocą Poco. Podoba mi się to
Poco::Net::ServerSocket svs(10880);
Poco::Net::HTTPServerParams* pParams = new Poco::Net::HTTPServerParams;
pParams->setKeepAlive(true);
Poco::Net::HTTPServer srv(new RequestHandlerFactory, svs, pParams);
srv.start();
i jest to część Handler
class RequestHandlerFactory: public Poco::Net::HTTPRequestHandlerFactory
{
public:
Poco::Net::HTTPRequestHandler* createRequestHandler(const Poco::Net::HTTPServerRequest& request)
{
cout << "hi!" << endl;
if (request.getURI() == "/test")
cout << endl << "test!" << endl;
else
{
cout << endl << request.getURI() << endl;
return 0;
}
}
};
działa dobrze, gdy otrzymam ten serwer za pośrednictwem przeglądarki internetowej. ale nigdy nie działa, gdy przekierowuje strona php. lubię to
//xxx.xxx.xxx.xxx is the poco server ip
echo "<meta http-equiv="refresh" content="0; url=http://xxx.xxx.xxx.xxx:10880/test">";
lub echo "document.location.href ="http://xxx.xxx.xxx.xxx:10880/test„; „;
lub echo "http://xxx.xxx.xxx.xxx:10880/test"> ";
Nie widzę „cześć”. Czy powinienem ustawić więcej rzeczy? Czy powinienem używać innych klas? Nie Poco :: Net :: HTTPServer?
Odpowiedzi:
1 dla odpowiedzi № 1Fabryka powinna utworzyć i zwrócić wskaźnik do HTTPRequestHandler
(która faktycznie obsługuje żądanie), a nie tylko zwraca 0. Oto an przykład.