From ca83869912161f6b19840871a9e9937b43e3ad43 Mon Sep 17 00:00:00 2001 From: Chunting Gu Date: Thu, 17 Dec 2020 10:13:59 +0800 Subject: [PATCH] Add an example for x-www-form-urlencoded --- examples/CMakeLists.txt | 3 +++ examples/form_urlencoded_client.cc | 36 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 examples/form_urlencoded_client.cc diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index a1f293e..d2e7c85 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -34,6 +34,9 @@ target_link_libraries(server_states ${EXAMPLE_LIBS}) add_executable(form_client form_client.cc) target_link_libraries(form_client ${EXAMPLE_LIBS}) +add_executable(form_urlencoded_client form_urlencoded_client.cc) +target_link_libraries(form_urlencoded_client ${EXAMPLE_LIBS}) + add_executable(form_server form_server.cc) target_link_libraries(form_server ${EXAMPLE_LIBS}) diff --git a/examples/form_urlencoded_client.cc b/examples/form_urlencoded_client.cc new file mode 100644 index 0000000..1edd9a1 --- /dev/null +++ b/examples/form_urlencoded_client.cc @@ -0,0 +1,36 @@ +// A client posting urlencoded form data. + +#include + +#include "webcc/client_session.h" +#include "webcc/logger.h" + +namespace bfs = boost::filesystem; + +int main(int argc, char* argv[]) { + WEBCC_LOG_INIT("", webcc::LOG_CONSOLE); + + webcc::ClientSession session; + + session.SetContentType("application/x-www-form-urlencoded", "utf8"); + + std::string url = "http://httpbin.org/post"; + + try { + // Don't use RequestBuilder::Query() which is dedicated to GET. + webcc::UrlQuery query; + query.Add("key1", "value1"); + query.Add("key2", "value2"); + // ... + + auto r = session.Send( + webcc::RequestBuilder{}.Post(url).Body(query.ToString())()); + + std::cout << r->data() << std::endl; + + } catch (const webcc::Error& error) { + std::cout << error << std::endl; + } + + return 0; +}