HTTPS, SSL, TLS client on D

Adam D. Ruppe destructionator at gmail.com
Wed Jan 29 06:54:11 PST 2014


You can also use OpenSSL. I wrote a little wrapper class that 
extends std.socket.Socket for it:

https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff/blob/master/sslsocket.d


If you download that file and compile it with your app:

dmd yourfile.d sslsocket.d

you should be able to

import sslsocket.

void main() {
         auto sock = new OpenSslSocket(AddressFamily.INET);
         sock.connect(new InternetAddress("localhost", 443));
         sock.send("GET / HTTP/1.0\r\n\r\n");
         import std.stdio;
         char[1024] buffer;
         writeln(buffer[0 .. sock.receive(buffer)]);
}



which gets from a local https server. Or of course you can 
connect to other things too and use the raw socket.


If you want a wrapper library to do http, curl is one option

phobos wrapper:
http://dlang.org/phobos/std_net_curl.html

my old wrapper:
https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff/blob/master/curl.d

the key function on mine is:

string curl(string url, string data = null, string contentType = 
"application/x-www-form-urlencoded");

if you pass it a data string, it does a POST, otherwise it goes a 
GET on the url.



I've also written non-curl http clients (see http.d and http2.d 
in my github), a http server (see cgi.d, it doesn't do ssl itself 
but you can put it behind apache or nginx or IIS to get it from 
them), and some oauth code (oauth.d in there). If you need to 
know anything about them feel free to ask.


More information about the Digitalmars-d-learn mailing list