diff --git a/README.md b/README.md index 0fd5a13..f00cec2 100644 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ The API for other HTTP requests is no different from GET. ### POST Request -POST request needs a body which is normally a JSON string for REST API. Let's post a small UTF-8 encoded JSON string: +A POST request needs a body which is normally a JSON string for REST API. Let's post a small UTF-8 encoded JSON string: ```cpp session.Send(webcc::RequestBuilder{}. @@ -180,6 +180,31 @@ session.Send(webcc::RequestBuilder{}. ()); ``` +The body of a POST request could be any content other than JSON string. + +It could be the binary data of a file. See [Uploading Files](#uploading-files). + +It could be a form urlencoded string: + +```cpp +webcc::ClientSession session; +session.SetContentType("application/x-www-form-urlencoded", "utf8"); + +// Use UrlQuery to compose the urlencoded string. +// 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("http://httpbin.org/post"). + Body(query.ToString()) + ()); +``` + +Please see [examples/form_urlencoded_client.cc](examples/form_urlencoded_client.cc) for more details. + ### Downloading Files Webcc has the ability to stream large response data to a file. This is especially useful when downloading files.