allow response status codes with curl

Boris Carvajal boris2.9 at gmail.com
Thu Oct 3 02:38:41 UTC 2019


On Thursday, 3 October 2019 at 01:02:43 UTC, Hampus wrote:
> I have a program that is using std.curl and right now if a http 
> request returns a status code other than 200 the program will 
> crash like this:
>
> std.net.curl.HTTPStatusException at C:\D\dmd2\windows\bin\..\..\src\phobos\std\net\curl.d(1082): HTTP request returned status code 404 (Not Found)
>
> What I want to do is allow certain stauts codes and I want my 
> program to keep going if it receives for example 404 or 500 but 
> raise an exception for lets say status code 403.

First: You post in the wrong forum section.

>
> How do I achieve this?

Catch that exception then do whatever you want, as in this code:

import std;

void main()
{
     try {
         get("dlang.org/aaaaaaaaaaa");
     }
     catch(CurlException ce)
     {
         if(auto e = cast(HTTPStatusException) ce)
         {
             if (e.status.among(403, 444))
                 throw new Exception("bad status, ending 
program.");

             if (e.status.among(404, 500))
                 writeln("request with status: ", e.status, ", but 
keep going.");
         }
         else if(auto e = cast(CurlTimeoutException) ce)
         {
             // TODO: implement retry
         }
         else {
             writeln(ce.msg);
         }
     }

     writeln("program finished.");
}



More information about the Digitalmars-d-announce mailing list