HTTP: Difference between revisions
Undo revision 315432 by WdeCvfYlmB (talk)
Thundergnat (talk | contribs) (Undo revision 315433 by WdeCvfYlmB (talk)) |
Thundergnat (talk | contribs) (Undo revision 315432 by WdeCvfYlmB (talk)) |
||
Line 807:
=={{header|Erlang}}==
===Synchronous===
<lang erlang>
-module(main).
-export([main/1]).
Line 815 ⟶ 816:
{ok, {_V, _H, Body}} -> io:fwrite("~p~n",[Body]);
{error, Res} -> io:fwrite("~p~n", [Res])
end.
</lang>▼
===Asynchronous===
<lang erlang>
-module(main).
-export([main/1]).
main([Url|[]]) ->
inets:start(),
Line 826 ⟶ 831:
_Any -> io:fwrite("Error: ~p~n",[_Any])
after 10000 -> io:fwrite("Timed out.~n",[])
end.
Using it
<lang erlang>|escript ./req.erl http://www.w3.org/Home.html</lang>▼
</lang>
=={{header|F_Sharp|F#}}==
In F# we can just use the .NET library to do this so its the same as the [[C_sharp|C#]] example.
<lang fsharp>let wget (url : string) =▼
▲<lang fsharp>
▲let wget (url : string) =
use c = new System.Net.WebClient()
c.DownloadString(url)
▲printfn "%s" (wget "http://www.rosettacode.org/")
▲</lang>
However unlike C#, F# can use an asynchronous workflow to avoid blocking any threads while waiting for a response from the server. To asynchronously download three url's at once...
<lang fsharp>open System.Net▼
▲<lang fsharp>
▲open System.Net
open System.IO
let wgetAsync url = async {▼
let request = WebRequest.Create (url:string)
▲let wgetAsync url =
use reader = new StreamReader(responseStream)
}
let urls = ["http://www.w3.org/Home.html"]
let content = urls
|> List.map wgetAsync
|