curl / Mailing Lists / curl-library / Single Mail
Buy commercial curl support. We help you work out your issues, debug your libcurl applications, use the API, port to new platforms, add new features and more. With a team lead by the curl founder Daniel himself.

Re: How to dry-run a http request

From: Peter Sylvester via curl-library <curl-library_at_lists.haxx.se>
Date: Sat, 15 Feb 2025 19:48:41 +0100

Hi, i
During my last eternity I used to make an entry in the /etc/hostsĀ  pointing the URL host to
localhost or even 127.0.0.n n>1
Thus, no mod necessary and you can have may servers on "localhost." provided you let then bind
correctly.

Best

On 15/02/2025 16:21, Jeroen Ooms via curl-library wrote:
> For the R bindings, we have a popular debugging mode to 'dry-run' a
> http request. By this we mean that the user builds and performs a
> http-request in the regular way, but instead of actually connecting to
> the requested host, we trick libcurl to make the http request to a
> local server, which records the full payload that libcurl has
> uploaded, and we return this blob to the user.
>
> Currently the way this is implemented is a bit cumbersome. We first
> start a http-server in the background. Then we take the handle
> provided by the user, and replace CURLOPT_URL to substitute the host
> with "http://localhost". Then we modify CURLOPT_HTTPHEADER to set the
> 'Host' request header to the host:port that was specified by the user
> in the original url, and let libcurl perform the request. The fake
> server always returns 200.
>
> Especially the part where we need to run our own http server is a bit
> annoying. I was wondering if there would perhaps be a simpler method
> trick libcurl to send a http request to a local file or buffer, from
> where we can read it. Preferably something that we can do entirely in
> C (things like nc are difficult to port).


-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library
Etiquette:   https://curl.se/mail/etiquette.html
Received on 2025-02-15