| 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; } } |