HTTP: Difference between revisions

84 bytes removed ,  3 years ago
Undo revision 315432 by WdeCvfYlmB (talk)
(Undo revision 315433 by WdeCvfYlmB (talk))
(Undo revision 315432 by WdeCvfYlmB (talk))
Line 807:
=={{header|Erlang}}==
===Synchronous===
<lang erlang>-module(main).
-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>
</lang>
 
===Asynchronous===
<lang erlang>-module(main).
-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.</lang>
</lang fsharp>
 
Using it
<lang fsharperlang>
<lang erlang>|escript ./req.erl http://www.w3.org/Home.html</lang>
printfn|escript "%s" (wget./req.erl "http://www.rosettacode.org/")
</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)
<langprintfn erlang>|escript"%s" ./req.erl(wget "http://www.w3.org/Home.html")</lang>
 
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 =
asyncuse! {response let= request = WebRequest.Create AsyncGetResponse(url:string)
use! responseresponseStream = requestresponse.AsyncGetResponseGetResponseStream()
use reader = new StreamReader(responseStream)
use responseStream = response.GetResponseStream()
usereturn reader = new StreamReader.ReadToEnd(responseStream)
}
return reader.ReadToEnd() }
let urls = ["http://www.w3.org/Home.html"]
 
let urls = ["http://www.rosettacode.org/"; "http://www.yahoo.com/"; "http://www.google.com/"]
let content = urls
|> List.map wgetAsync
10,333

edits