Libwww Ready to go Samples
Initialization | GET |
HEAD | PUT | POST
| TRACE | OPTIONS |
HTML Parsing | XML Parsing
| Serving Requests | Eventloop
| Big sample apps
This is the list of small examples using the very basic features of the Library.
If you have not already compiled the library then please read the
Installation guide before you continue.
If you want more details of how to use the Library then please read the
User's Guide.
In the example we assume that the compiler knows where to look for libwww
include files and the binary library itself. If you are using the GNU
autoconf configure script then the examples are built as part of the overall
package. On other platforms, you must provide
the make file on your own.
-
Start and Stop the Library
-
This is a dummy program that just initializes as terminates the Library
-
Default Initialization of libwww
-
This example shows how to set up all the default handlers, parsers, converters,
etc. using the WWWInit interface.
-
Specialized Initialization of libwww
-
This example show how to register a protocol module and a stream converter
-
Timezone sampler
-
Figures out what timezone you are in. This is important for libwww to know
as the persistent cache and a lot of other things depends on it.
Client Requests using libwww
These sample programs are all using libwww as a client side library
which is what comes most natural to libwww.
-
Load a document and headers into memory
-
A simple example of how you can create a memory buffer containing the contents
of the URL and all the protocol headers.
-
Load a document without headers into memory
-
This program shows how to load a URL into memory without getting the
header information.
-
Load a document and count the number of bytes in the
body
-
This is an example of how you can add streams and then get the desired result.
The example shows how to add a content length counter stream and get the
result back.
-
Load a document and dump to local File
-
We here show how to fetch a document using HTTP and to save it to local file.
You must specify a local file name on the command line. There are two versions
of this program: The preemptive version with
no event loop and the non-preemptive version
for integration with Windows' event and other event loops.
-
Load the same document n times using blocking
sockets
-
You can use this (but be careful) to beat up a server with the same document
as fast as possible.
-
Load the same document n times using non-blocking
sockets
-
Be careful! Also remember that only GET and HEAD requests
can be pipelined in HTTP - not POST, for example.
-
Range Requests
-
Range requests can be used to ask for a part or for several parts of a document
from an HTTP server without asking for the whole thing. The output is sent
directly to stdout. Run the program without parameters for instructions.
-
Issue a HEAD request
-
This small example sets up a request and performs a HEAD method on the resource
provided on the command line
-
Issue a HEAD request and check for redirections
-
A small program that sends a request out and checks whether is was redirected.
If so then print out the redirected address
-
Simple PUT program
-
Lets you save a document to an HTTP server. Note that both input and output
is a Web address (URI) so you can save a document from anywhere to anywhere.
-
Save data from memory to a remote server
-
This sample shows you how to use temporary anchors and how to save data from
memory using PUT
-
Post an HTML Form
-
Use this example to POST HTML form data to a server
-
Post data from memory to a remote server
-
This sample shows you how to use temporary anchors and how to POST data from
memory
-
Send a TRACE request to a server
-
Allows to include the max number of hops (proxies) the request must pass
-
Send an OPTIONS request to a server - this is yet an exercise for the user!
-
It should allow support for sending OPTIONS on a * URI (although
I really don't like that!)
Three small sample apps that show how to use the new
HText interface and the
libwww HTML parser.
-
showlinks.c
-
Parses a document and writes out all the links that it found to stdout
-
showtags.c
-
Parses a document and writes out all the HTML tags found to stdout
-
showtext.c
-
Parses a document and writes out all the "plain" text - that is what's between
the HTML markup
-
tiny.c
-
Is a very rudimentary HTTP/HTML browser with no layout engine and no fuzz.
It's main feature is that it is small (<200K when stripped on linux).
Here are some sample apps that show how to use libwww together with
James Clark's expat XML parser
-
showxml.c
-
A simple program that shows all XML start and end tags and nothing else
Although libwww is primarily for clients, it is in fact symmetric in that
it can handle both client requests and server requests. The way this is handled
is that each protocol is registered with
both a client handler and a server handler - depending on which type of request
you use, one of them is called. Note that in order to be able to serve any
document, there actually have to be a server handler. Currently, libwww only
comes with a raw socket loader which isn't
much of a server.
-
Listen on a socket
-
This sample program opens a raw socket and listens on that port. Anything
arriving is forwarded asis to stdout
Libwww is designed using a "coke machine model", in other words using
asynchronous requests for most of its operations. For GET and
HEAD requests you can also use synchronous requests, but they are
not as flexible and requires more care.
-
Simple eventloop
-
Keeps loading the same file whenever a user enters something. Stop the
application by hitting "q"
You can also have a look at the more
complete sample applications which
are capable of doing more interesting things. If you have any example code
that you would like to share with us then
please send us a mail so that we can add it to this page.
Henrik Frystyk Nielsen,
@(#) $Id: Overview.html,v 1.22 1999/02/26 20:45:19 frystyk Exp $