curl: catching exception on connect.
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Dec 1 11:36:26 PST 2014
On 12/01/2014 10:25 AM, Suliman wrote:
> why:
> string link = "dlang.org";
> writeln(connect(link));
>
> cause crash:
(To be pedantic: An unhandled exception is not a crash. ;) )
>
std.net.curl.CurlException at C:\DMD\dmd2\windows\bin\..\..\src\phobos\std\net\curl
>
> .d(779): HTTP request returned status code 400
Indeed, the following program does behave in the same way:
import std.stdio;
import std.net.curl;
pragma(lib, "curl");
void main()
{
string link = "dlang.org";
writeln(connect(link));
}
I have very little experience with the HTTP protocol and its methods but
I've just learnt that connect() is for HTTP's CONNECT method, which is
most likely supported on port 443.
So, I tried
string link = "dlang.org:443";
and got
std.net.curl.CurlException at std/net/curl.d(3684): Server returned nothing
(no headers, no data) on handle 198F860
So, that's an improvement I guess. (It was the same result at
"google.com:443") Then I tried HTTPS explicitly:
string link = "https://dlang.org:443";
Now the error message is more promising:
std.net.curl.CurlException at std/net/curl.d(3684): Peer certificate cannot
be authenticated with known CA certificates on handle 1653860
My guess is that you have to use HTTPS for CONNECT and that you have to
have credentials for it. (?)
Ali
More information about the Digitalmars-d-learn
mailing list