cpp-httplib | A C++ header-only HTTP/HTTPS server and client library | HTTP library

 by   yhirose C++ Version: v0.12.5 License: MIT

kandi X-RAY | cpp-httplib Summary

kandi X-RAY | cpp-httplib Summary

cpp-httplib is a C++ library typically used in Networking, HTTP applications. cpp-httplib has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub.

A C++11 single-file header-only cross platform HTTP/HTTPS library.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              cpp-httplib has a medium active ecosystem.
              It has 9594 star(s) with 1947 fork(s). There are 174 watchers for this library.
              There were 3 major release(s) in the last 12 months.
              There are 15 open issues and 1109 have been closed. On average issues are closed in 5 days. There are 7 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of cpp-httplib is v0.12.5

            kandi-Quality Quality

              cpp-httplib has 0 bugs and 0 code smells.

            kandi-Security Security

              cpp-httplib has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              cpp-httplib code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              cpp-httplib is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              cpp-httplib releases are available to install and integrate.
              Installation instructions are not available. Examples and code snippets are available.
              It has 77 lines of code, 0 functions and 7 files.
              It has low code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of cpp-httplib
            Get all kandi verified functions for this library.

            cpp-httplib Key Features

            No Key Features are available at this moment for cpp-httplib.

            cpp-httplib Examples and Code Snippets

            No Code Snippets are available at this moment for cpp-httplib.

            Community Discussions

            QUESTION

            cpp-httplib https server not working on Linux
            Asked 2021-Sep-27 at 21:16

            I am trying to create a HTTPS Server running on linux with cpp-httplib in C++. (https://github.com/yhirose/cpp-httplib) Everything worked when I used Windows. But on linux only the HTTP Server works. It seems like the HTTPS Server does not open a port which I do not understand... When typing: sudo netstat -tuplen in Terminal the expected port 8080 only shows up when running the HTTP Server not when running the HTTPS Server. My firewall also seems to be inactive: sudo ufw status gives Status: inactive
            Maybe I have linked something wrong, but everything seems to run fine. I am new to C++ and Linux, so it is likely I have just made a silly mistake. I just run this code in Clion if that matters..

            this is the Code for the HTTP Server (working and running as expected):

            ...

            ANSWER

            Answered 2021-Sep-27 at 21:16

            Ok as mentioned in the comments the problem was that the certs could not be found. I have given the absolute path for now and it works fine. Thanks!

            PS: As I said: "probably a silly mistake"..

            Source https://stackoverflow.com/questions/69352573

            QUESTION

            How to enable CertOpenSystemStoreW in the cpp-httplib library
            Asked 2021-Aug-11 at 04:11

            I am developing a UWP C++/winRT app in Visual Studio, and am trying to get the cpp-httplib library to work. It works fine if I am not using HTTPS, but when I define the CPPHTTPLIB_OPENSSL_SUPPORT flag, an "#ifdef" in httplib.h defines a function which subcalls CertOpenSystemStoreW(), which results in an error that CertOpenSystemStoreW() is undeclared.

            On tracing deeper into , it seems that CertOpenSystemStoreW is part of an unactivated code region because of my configuration.

            What can I do to reactivate the region, or what should I replace CertOpenSystemStoreW() with, to make SSL work? (CertOpenStore() seems to work, but I don't really understand SSL details enough to know if I can simply replace the function)

            ...

            ANSWER

            Answered 2021-Aug-11 at 04:11

            Thanks! I was able to send HTTPS responses using HttpClient. I also copy-pasted "json.hpp" into my project from a header-only json library, since Windows.Data.Json wasn't being recognized by VS for some reason.

            I successfully was able to get a HTTPS response and parse the data !

            Source https://stackoverflow.com/questions/68733763

            QUESTION

            making HTTPS request using cpp-httplib
            Asked 2020-Aug-27 at 17:57

            I'm trying to send an HTTPS request in c++ using Cpp-httplib but I'm getting various errors and warnings building their example:

            ...

            ANSWER

            Answered 2020-Aug-27 at 17:57

            Try this. The definition must be before including the library.

            Source https://stackoverflow.com/questions/63584828

            QUESTION

            Windows vs Linux - C++ Thread Pool Memory Usage
            Asked 2020-Aug-22 at 10:56

            I have been looking at the memory usage of some C++ REST API frameworks in Windows and Linux (Debian). In particular, I have looked at these two frameworks: cpprestsdk and cpp-httplib. In both, a thread pool is created and used to service requests.

            I took the thread pool implementation from cpp-httplib and put it in a minimal working example below, to show the memory usage that I am observing on Windows and Linux.

            ...

            ANSWER

            Answered 2020-Aug-22 at 03:10

            Many modern allocators, including the one in glibc 2.17 that you are using, use multiple arenas (a structure which tracks free memory regions) in order to avoid contention between threads which want to allocate at the same time.

            Memory freed back to one arena isn't available to be allocated by another arena (unless some type of cross-arena transfer is triggered).

            By default, glibc will allocate new arenas every time a new thread makes an allocation, until a predefined limit is hit (which defaults to 8 * number of CPUs) as you can see by examining the code.

            One consequence of this is that memory allocated then freed on a thread may not be available to other threads since they are using separate areas, even if that thread isn't doing any useful work.

            You can try setting the glibc malloc tunable glibc.malloc.arena_max to 1 in order to force all threads to the same arena and see if it changes the behavior you were observing.

            Note that this has everything to do with the userspace allocator (in libc) and nothing to do with the OS allocation of memory: the OS is never informed that the memory has been freed. Even if you force a single arena, it doesn't mean that the userspace allocator will decide to inform the OS: it may simply keep the memory around to satisfy a future request (there are tunables to adjust this behavior also).

            However, in your test using a single arena should be enough to prevent the constantly increasing memory footprint since the memory is freed before the next thread starts, and so we expect it to be reused by the next task, which starts on a different thread.

            Finally, it is worth pointing out that what happens is highly dependent on exactly how threads are notified by the condition variable: presumably Linux uses a FIFO behavior, where the most recently queued (waiting) thread will be the last to be notified. This causes you to cycle through all the threads as you add tasks, causing many arenas to be created. A more efficient pattern (for a variety of reasons) is a LIFO policy: use the most recently enqueued thread for the next job. This would cause the same thread to be repeatedly reused in your test and "solve" the problem.

            Final note: many allocators, but not the on in the older version of glibc that you are using, also implement a per-thread cache which allows the allocation fast path to proceed without any atomic operations. This can produce a similar effect to the use of multiple arenas, and which keeps scaling with the number of threads.

            Source https://stackoverflow.com/questions/63454529

            QUESTION

            showing content of an HTTP response in the browser without refreshing
            Asked 2020-Aug-13 at 17:44

            I am new to Django and I don't know if what I want is achievable this way.
            I have a simple c++ client that has to send a char* array containing Json data using an HTTP request (post method) to my Django server(I use cpp-httplib to send HTTP request in c++).
            The data is sent successfully the problem is I want to see the Json data in my browser as well but I have failed to do so.
            Both client and server are running on the same machine and server is on localhost.
            here is my **views.py** ...

            ANSWER

            Answered 2020-Jul-31 at 21:05

            If you want to deal with Django through Json objects, try to send objects as Json and return objects as Json.

            Source https://stackoverflow.com/questions/63198695

            QUESTION

            HTTPS Giving Segfault in cpp-httplib
            Asked 2020-Aug-03 at 10:23

            I'm trying to do some HTTP(S) requests with cpp-httplib. Why does

            ...

            ANSWER

            Answered 2020-Aug-03 at 10:23

            Following the README on cpp-httplib github:

            • add #define CPPHTTPLIB_OPENSSL_SUPPORT,
            • link libssl and libcrypto.

            So the code would be so:

            Source https://stackoverflow.com/questions/63227676

            QUESTION

            How to link/include c++ libraries correctly
            Asked 2020-Jun-26 at 14:55

            I tried to compile program with https://github.com/yhirose/cpp-httplib "one-header" library. I wrote

            ...

            ANSWER

            Answered 2020-Jun-26 at 14:55

            It's gcc's known particular feature, its std::thread implementation is built upon pthreads so it requires specifying -pthread to correctly link programs with threads.

            Source https://stackoverflow.com/questions/62594898

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install cpp-httplib

            You can download it from GitHub.

            Support

            SSL support is available with CPPHTTPLIB_OPENSSL_SUPPORT. libssl and libcrypto should be linked. Note: When using SSL, it seems impossible to avoid SIGPIPE in all cases, since on some operating systems, SIGPIPE can only be suppressed on a per-message basis, but there is no way to make the OpenSSL library do so for its internal communications. If your program needs to avoid being terminated on SIGPIPE, the only fully general way might be to set up a signal handler for SIGPIPE to handle or ignore it yourself.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries