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