123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
|
/*******************************************************************************
copyright: Copyright (c) 2004 Kris Bell. All rights reserved
license: BSD style: $(LICENSE)
version: Initial release: January 2006
author: Kris
*******************************************************************************/
module tango.net.http.HttpGet;
public import tango.net.Uri;
private import tango.net.http.HttpClient,
tango.net.http.HttpHeaders;
/*******************************************************************************
Supports the basic needs of a client making requests of an HTTP
server. The following is a usage example:
---
// open a web-page for reading (see HttpPost for writing)
auto page = new HttpGet ("http://www.digitalmars.com/d/intro.html");
// retrieve and flush display content
Cout (cast(char[]) page.read) ();
---
*******************************************************************************/
class HttpGet : HttpClient
{
alias HttpClient.read read;
/***********************************************************************
Create a client for the given URL. The argument should be
fully qualified with an "http:" or "https:" scheme, or an
explicit port should be provided.
***********************************************************************/
this (const(char)[] url)
{
this (new Uri(url));
}
/***********************************************************************
Create a client with the provided Uri instance. The Uri should
be fully qualified with an "http:" or "https:" scheme, or an
explicit port should be provided.
***********************************************************************/
this (Uri uri)
{
super (HttpClient.Get, uri);
// enable header duplication
getResponseHeaders().retain (true);
}
/***********************************************************************
***********************************************************************/
void[] read ()
{
auto buffer = super.open();
try {
if (super.isResponseOK())
buffer.load (getResponseHeaders().getInt(HttpHeader.ContentLength));
} finally {super.close();}
return buffer.slice();
}
}
/*******************************************************************************
*******************************************************************************/
debug (HttpGet)
{
import tango.io.Console;
void main()
{
// open a web-page for reading (see HttpPost for writing)
auto page = new HttpGet ("http://www.digitalmars.com/d/intro.html");
// retrieve and flush display content
Cout (cast(char[]) page.read) ();
foreach (header; page.getResponseHeaders)
Cout (header.name.value) (header.value).newline;
}
}
|