<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
                 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<!-- 
   ====================================================================
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
   ====================================================================
 -->
<book xmlns:xi="http://www.w3.org/2001/XInclude">
    
    <bookinfo>
        <title>HttpClient Tutorial</title>
        <releaseinfo>&version;</releaseinfo>

        <authorgroup>
            <author>
                <firstname>Oleg</firstname>
                <surname>Kalnichevski</surname>
            </author>
            <author>
                <firstname>Jonathan</firstname>
                <surname>Moore</surname>
            </author>
            <author>
                <firstname>Jilles</firstname>
                <surname>van Gurp</surname>
            </author>
        </authorgroup>

        <legalnotice>
            <formalpara>
            Licensed to the Apache Software Foundation (ASF) under one
            or more contributor license agreements.  See the NOTICE file
            distributed with this work for additional information
            regarding copyright ownership.  The ASF licenses this file
            to you under the Apache License, Version 2.0 (the
            "License"); you may not use this file except in compliance
            with the License.  You may obtain a copy of the License at
            </formalpara>
            <formalpara>
              <ulink url="http://www.apache.org/licenses/LICENSE-2.0"/>
            </formalpara>
            <formalpara>
            Unless required by applicable law or agreed to in writing,
            software distributed under the License is distributed on an
            "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
            KIND, either express or implied.  See the License for the
            specific language governing permissions and limitations
            under the License.
            </formalpara>
        </legalnotice>
    </bookinfo>

    <toc/>

    <xi:include href="preface.xml"/>
    <xi:include href="fundamentals.xml"/>
    <xi:include href="connmgmt.xml"/>
    <xi:include href="statemgmt.xml"/>
    <xi:include href="authentication.xml"/>
    <xi:include href="fluent.xml"/>
    <xi:include href="caching.xml"/>
    <xi:include href="advanced.xml"/>
    
</book>
