HTTPS: Difference between revisions

From Rosetta Code
Content added Content deleted
(Added R code)
(CL solution (same as for HTTP Request))
Line 14: Line 14:
#include urlgetcontents.ahk
#include urlgetcontents.ahk
#include wininet.ahk
#include wininet.ahk
</lang>
</lang>

=={{header|Common Lisp}}==

Using DRAKMA, first grabbing the entire body as a string, and then by pulling from a stream. This is the same code as in [[HTTP Example]]; <code>drakma:http-request</code> supports SSL.

<lang lisp>(defun wget-drakma-string (url &optional (out *standard-output*))
"Grab the body as a string, and write it to out."
(write-string (drakma:http-request url) out))
(defun wget-drakma-stream (url &optional (out *standard-output*))
"Grab the body as a stream, and write it to out."
(loop with body = (drakma:http-request url :want-stream t)
for line = (read-line body nil nil)
while line do (write-line line)
finally (close body)))

;; Use
(wget-drakma-stream "https://sourceforge.net") </lang>


=={{header|F_Sharp|F#}}==
=={{header|F_Sharp|F#}}==

Revision as of 18:35, 4 August 2009

Task
HTTPS
You are encouraged to solve this task according to the task description, using any language you may know.

Print an HTTPS URL's content to the console. Checking the host certificate for validity is recommended. The client should not authenticate itself to the server — the webpage https://sourceforge.net/ supports that access policy — as that is the subject of other tasks.

Readers may wish to contrast with the HTTP Request task, and also the task on HTTPS request with authentication.

AutoHotkey

Library: wininet

<lang AutoHotkey> URL  := "https://sourceforge.net/" WININET_Init() msgbox % html := UrlGetContents(URL) WININET_UnInit() return

  1. include urlgetcontents.ahk
  2. include wininet.ahk

</lang>

Common Lisp

Using DRAKMA, first grabbing the entire body as a string, and then by pulling from a stream. This is the same code as in HTTP Example; drakma:http-request supports SSL.

<lang lisp>(defun wget-drakma-string (url &optional (out *standard-output*))

 "Grab the body as a string, and write it to out."
 (write-string (drakma:http-request url) out))

(defun wget-drakma-stream (url &optional (out *standard-output*))

 "Grab the body as a stream, and write it to out."
 (loop with body = (drakma:http-request url :want-stream t)
       for line = (read-line body nil nil)
       while line do (write-line line)
       finally (close body)))
Use

(wget-drakma-stream "https://sourceforge.net") </lang>

F#

The underlying .NET classes handle secure web connections the same way they manage insecure connections.

#light
let wget (url : string) =
    let c = new System.Net.WebClient()
    c.DownloadString(url)

Python

Python's urllib2 (urllib.request in Python3) has support for SSL if the interpreter's underlying httplib libraries were compiled with SSL support. By default this will be the enabled for default Python installations on most platforms.

<lang Python> import urllib2 request = urllib2.urlopen('https://sourceforge.net/') print request.read() request.close() </lang>

R

Library: RCurl
Library: XML

The basic idea is to use getURL (as with HTTP_Request), but with some extra parameters. <lang R> library(RCurl) webpage <- getURL("https://sourceforge.net/", .opts=list(followlocation=TRUE, ssl.verifyhost=FALSE, ssl.verifypeer=FALSE)) </lang> In this case, the webpage output contains unprocessed characters, e.g. \" instead of " and \\ instead of \, so we need to process the markup. <lang R> wp <- readLines(tc <- textConnection(cat(webpage))) close(tc) </lang> Finally, we parse the HTML and find the interesting bit. <lang R> pagetree <- htmlTreeParse(wp) pagetree$children$html </lang>

Tcl

Uses the Tls package. <lang tcl>package require http package require tls http::register https 443 ::tls::socket

  1. Make a secure connection

set token [http::geturl https://sourceforge.net/]

  1. Now as for conventional use of the “http” package

puts [http::data $token] http::cleanup $token</lang>