String GetPath() const { return path; } String GetHost() const { return host; } int GetPort() const { return port; }
ob_start(); // do initial processing here echo $response; // send the response to the client header('Connection: close'); header('Content-Length: '.ob_get_length()); ob_end_flush(); ob_flush(); flush(); //... continue other stuff //...
HttpRequest http("https://myaddress.com.br:8443/XXX/YYY"); http.POST(); http.Post("cad", "GetAlgo"); http.Post("myx", "abc"); http.Post("myz", "*"); http.ContentType("charset=UTF-8"); http.ContentType("application/x-www-form-urlencoded"); String sr = http.Execute(); Cout() << "conteudo " << http.GetContent() << EOL; Value v = ParseJSON(~sr); Cout() << "string retornado: " << sr << EOL; Cout() << "value: " << v << EOL;
void fileupload::upload() { String url = "https://validurl/transfer.php"; httprequest r(url); String fn = "C:/upp/out/MyApps/MSBT17.Gui/test.pdf"; String s = LoadFile(fn); r.POST(); r.Part("file", s , "multipart/form-data", fn); r.Part("username", FTPUSER , "multipart/form-data"); r.Part("password", FTPPASS , "multipart/form-data"); r.Execute(); }
void fileupload::upload() { String url = "https://validurl/transfer.php"; httprequest r(url); String fn = "C:/upp/out/MyApps/MSBT17.Gui/test.pdf"; String s = LoadFile(fn); r.POST(); r.Part("file", s , "multipart/form-data", fn); r.Execute(); }
void fileupload::upload() { String url = "https://validurl/transfer.php"; httprequest r(url); String fn = "C:/upp/out/MyApps/MSBT17.Gui/test.pdf"; String s = LoadFile(fn); r.POST(); r.Part("file", s , "multipart/form-data", fn); r.Post("username", USER); r.Post("password", PASS); r.Execute(); }
#include <Core/Core.h> #include <signal.h> using namespace Upp; TcpSocket server; StaticMutex ServerMutex; void signal_callback_handler(int signum) { Cout() << "Caught signal " << signum << EOL; // Terminate program exit(signum); } void Server() { bool stop = false; // Of course it is not recommended to manipulate the server through // the client! This condition is for experimental testing purposes! for(;;) { TcpSocket socket; LOG("Waiting..."); ServerMutex.Enter(); bool b = socket.Accept(server); ServerMutex.Leave(); if((b) && stop == false) { LOG("Connection accepted"); HttpHeader http; http.Read(socket); String html; html << "<html>" << "<b>Method:</b> " << http.GetMethod() << "<br>" << "<b>URI:</b> " << http.GetURI() << "<br>"; stop = (http.GetURI().Find("stop=ok") > -1); if(stop) html << "<p>atenção! vai encerrar o servidor!</p>" << "<br>"; for(int i = 0; i < http.fields.GetCount(); i++) html << "<b>" << http.fields.GetKey(i) << ":</b> " << http.fields[i] << "<br>"; int len = (int)http.GetContentLength(); if(len > 0) socket.GetAll(len); html << "<b><i>Current time:</i></b> " << GetSysTime() << "</html>"; HttpResponse(socket, http.scgi, 200, "OK", "text/html", html); if(stop) { socket.Close(); server.Close(); exit(0); } signal(SIGINT, signal_callback_handler); } } } CONSOLE_APP_MAIN { StdLogSetup(LOG_COUT | LOG_FILE); if(!server.Listen(4000, 10)) { LOG("Cannot open server port for listening\r\n"); return; } #ifdef _MULTITHREADED const int NTHREADS = 10; for(int i = 0; i < NTHREADS; i++) Thread::Start(callback(Server)); #endif Server(); }
probably should not modify GUI from within other than the GUI thread.
#include <CtrlLib/CtrlLib.h> using namespace Upp; #define LAYOUTFILE <DeadMutex/DeadMutex.lay> #include <CtrlCore/lay.h> static std::atomic<bool> fin; class DeadMutex : public WithDeadMutexLayout<TopWindow> { typedef DeadMutex CLASSNAME; public: DeadMutex() { CtrlLayout(*this, "Window title"); start.WhenPush = THISFN(Start); stop.WhenPush = [this]{ fin = true; }; WhenClose = [this]{ ShutdownThreads(); Break(); }; } void Start(){ Thread().Run([=] { { GuiLock __; // EnterGuiMutex() log.Append("Badguy instance running & owned the gui mutex...\n"); // LeaveGuiMutex(); } while(!fin && !IsShutdownThreads() ){ Sleep(50); } GuiLock __; log.Append("Stop requested, Badguy instance exiting...\n"); fin = false; }); } }; GUI_APP_MAIN { DeadMutex().Run(); }