Motified WebCC library. Oraginal Source: https://github.com/sprinfall/webcc
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Chunting Gu e621025cc3 Remove http prefix 6 years ago
autotest Remove http prefix 6 years ago
data Refine the support for uploading files. 6 years ago
doc/screenshots Rename test to autotest 6 years ago
examples Remove http prefix 6 years ago
third_party Remove SOAP support 6 years ago
unittest Remove http prefix 6 years ago
webcc Remove http prefix 6 years ago
CMakeLists.txt Remove http prefix 6 years ago
CPPLINT.cfg Add config file for cpplint. 7 years ago
LICENSE Create LICENSE 7 years ago
README.md Remove http prefix 6 years ago
_clang-format Support terminal colors for logger. 6 years ago

README.md

webcc

C++ client and server library for HTTP and REST based on Boost Asio.

Please turn to our Wiki (under construction) for more tutorials and guides.

Wondering how to build Webcc? Click Build Instructions.

Client API Examples

A complete client example:

#include <iostream>

#include "webcc/client_session.h"
#include "webcc/logger.h"

int main() {
  // Configure logger.
  WEBCC_LOG_INIT("", webcc::LOG_CONSOLE);
  
  // Session provides convenient request APIs, stores request configurations
  // and manages persistent connenction.
  webcc::ClientSession session;

  // Catch exceptions for error handling.
  try {
    // Send a HTTP GET request.
    auto r = session.Get("http://httpbin.org/get");

    // Print the response content data.
    std::cout << r->content() << std::endl;

  } catch (const webcc::Exception& e) {
    std::cout << e.what() << std::endl;
  }

  return 0;
}

The Get() method is nothing but a shortcut of Request(). Using Request() directly is more complicated:

auto r = session.Request(webcc::RequestBuilder{}.Get().
                         Url("http://httpbin.org/get")
                         ());

As you can see, a helper class named RequestBuilder is used to chain the parameters and finally build (don't miss the () operator) a request object.

Both the shortcut and Request() accept URL query parameters:

// Query parameters are passed using a std::vector. 
session.Get("http://httpbin.org/get", { "key1", "value1", "key2", "value2" });

session.Request(webcc::RequestBuilder{}.Get().
                Url("http://httpbin.org/get").
                Query("key1", "value1").
                Query("key2", "value2")
                ());

Adding additional headers is also easy:

session.Get("http://httpbin.org/get",
            {"key1", "value1", "key2", "value2"},
            {"Accept", "application/json"});  // Also a std::vector
                
session.Request(webcc::RequestBuilder{}.Get().
                Url("http://httpbin.org/get").
                Query("key1", "value1").
                Query("key2", "value2").
                Header("Accept", "application/json")
                ());

Accessing HTTPS has no difference from HTTP:

session.Get("https://httpbin.org/get");

NOTE: The HTTPS/SSL support requires the build option WEBCC_ENABLE_SSL to be enabled.

Listing GitHub public events is not a big deal:

auto r = session.Get("https://api.github.com/events");

You can then parse r->content() to JSON object with your favorite JSON library. My choice for the examples is jsoncpp. But the library itself doesn't understand JSON nor require one. It's up to you to choose the most appropriate JSON library.