<html>
<head>
<title>Http Tasks</title>
</head>
<body>
<h2>Http Tasks</h2>

Tasks do to make the basic HTTP requests: get, post, head, put, with authentication.
There is also a task to configure the proxy settings of the http tasks.
<p>
These tasks significantly extend the basic <a
href="../CoreTasks/get.html">get task</a>, but are split off into the optional section
so that
<ol>
<li> The core ant file doesn't get so big
<li> this implementation can move to using an optional jar (HttpClient) to work around
limitations of the HTTP support built in to the Java platform.   
</ol>

<h3>Core Functionality and Parameters</h3>

<p>Common functionality to the core tasks tasks is </p>

<ol>

<li>Ability to name the remote url which the target of the request.</li>

<li>Ability to name a local file as the local store of any returned
content.</li>

<li>Ability to name a property as the local store of any returned
content.</li>

<li>Ability to name a property to be set to &quot;true&quot; when a
request succeeds.</li>

<li>The option to list a number of parameters, each with a name and a
value. Some methods (HttpGet, HttpHead) attach these parameters to the
stated url to generate the url to actually fetch. Others (HttpPost) send
the parameters up in the standard representation of form data.</li>

<li>The option to state the authentication policy and then the username
and password. Currently only basic authentication is used, which is
utterly insecure except over an https link</li>

<li>A 'verbose' option which provides extra information and progess
information during a download.</li>

<li>Timestamp control, using the <i>usetimestamp</i> flag. When set the
timestamp of downloaded content is set to match that of the remote file
(Java 1.2 or later only), and the local timestamp of the destination
file (if it exists) used to set the if-modified-since header in the
request, which will trigger optional download only. </li>

</ol>

<h3>Parameters</h3>

<p> The <i>url</i> parameter specifies the URL to access. The optional
<i>dest</i> parameter specifies a destination to which the retrieved
page will be written. The optional <i>destinationproperty </i>parameter
specifies a name of a property to save the content to, instead of a
property. If neither <i>dest</i> nor <i>destinationproperty</i>
specified, the contents of the specified URL are discarded (this is
useful when accessing the URL for the purpose of causing some action on
the remote server).</p>

<p> When the <i>verbose</i> option is enabled, the task displays a '.' for every 
  64 KB retrieved. If the <i>blocksize</i> parameter is adjusted then files are 
  uploaded or downloaded in a different size block from this, and progress markers 
  appear appropriately. </p>

The <i>usetimestamp</i> option enables you to control downloads so that
the remote file is only fetched if newer than the local copy. If there
is no local copy, the download always takes place. When a file is
downloaded, the timestamp of the downloaded file is set to the remote
timestamp, if the JVM is Java1.2 or later. NB: This timestamp facility
only works on downloads using the HTTP protocol.

<p>The <i>authtype</i>, <i>username</i>, and <i>password</i> options enable support 
  for password protected pages. Currently only 'Basic' authentication is used, 
  which is notoriously insecure except over an encrypted https channel.</p>
<table border="1" cellpadding="2" cellspacing="0">
  <tr> 
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr> 
    <td valign="top">authtype</td>
    <td valign="top">the HTTP authentication protocol to use, <i>none</i> or <i>basic</i>.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top">blocksize</td>
    <td valign="top">size (in kilobytes) of the data block used for upload and 
      download. Default: 64.<br>
      Keep this to a multiple of the hard disk sector size for file IO performance.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top"><b>dest</b></td>
    <td valign="top">the file where to store the retrieved file.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top">destinationProperty</td>
    <td valign="top">the name of a property to fill with the returned content. 
      Ignored if <i>dest</i> is set</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top">failonerror</td>
    <td valign="top">stop the build if the request failed. default: true</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top">password</td>
    <td valign="top">the password for authentication.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top">successProperty</td>
    <td valign="top">the name of a property to set to &quot;true&quot; if the 
      request succeeds.<br>
      Set <i>failonerror</i> to false for this to be of use.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top"><b>url</b></td>
    <td valign="top">the URL from which to retrieve a file.</td>
    <td align="center" valign="top">Yes</td>
  </tr>
  <tr> 
    <td valign="top">usecaches</td>
    <td valign="top">boolean to enable 'caching' of content during the fetch process. 
      default:false</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr>
    <td valign="top">useresponsecode</td>
    <td valign="top">boolean to enable success/failure to be determined by result 
      of the received response code. HTTP only. default=true.</td>
    <td align="center" valign="top">&nbsp;</td>
  </tr>
  <tr> 
    <td valign="top">username</td>
    <td valign="top">the user name for authentication.</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top">usetimestamp</td>
    <td valign="top">boolean flag to conditionally download a file based on the 
      timestamp of the local copy. HTTP only</td>
    <td align="center" valign="top">No</td>
  </tr>
  <tr> 
    <td valign="top">verbose</td>
    <td valign="top"> boolean flag to control progress information display.</td>
    <td align="center" valign="top">No</td>
  </tr>
</table>
<p> The <i>successProperty</i> names a property which will be set to "true" if 
  the request was deemed successful. For any non-http protocol, success is defined 
  as the request completing. For http and https, success is defined as the request 
  completing, and the response code from the serving being one of the 'success' 
  values -any number between 200 and 299 inclusive. The usual HTTP_OK (200) is 
  therefore a success, as is HTTP_ACCEPTED (202). But failures such as BAD_REQUEST 
  (400) and the ubiquitous HTTP_NOT_FOUND (404) are most definately errors. So 
  an attempt to access a missing url may result 'failure',even though some content 
  was download (such as, perhaps, the 'file not found' text). If this is not what 
  you desire, then set <i>useresponsecode</i>=&quot;false&quot; for the system 
  to interpret any data back as a success. 
<h3>Parameters specified as nested elements</h3>

<p><b>param</b></p>

<p>Specifies an HTTP request parameter to send as part of the request.
For <i>get</i> and <i>head</i> request methods the parameters are
encoded as part of the URL. For <i>post</i> request methods, the
parameters are sent as the POST request data.</p>

<table cellspacing="0" cellpadding="2" border="1">
  <tbody>
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td valign="top" align="middle"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">name</td>
    <td valign="top">the name of the request property to set.</td>
    <td valign="top" align="middle">Yes</td>
  </tr>
  <tr>
    <td valign="top">value</td>
    <td valign="top">the value of the request property. You may alternatively
      specify the value as text between the beginning and ending param tags.</td>
    <td valign="center" align="middle">Yes</td>
  </tr>
  </tbody>
</table>

<p><b>header</b></p>

<p>Specifies an arbitrary HTTP request header that will be sent with the
request.</p>

<table cellspacing="0" cellpadding="2" border="1">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td valign="top" align="middle"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">name</td>
    <td valign="top">the name of the HTTP request header</td>
    <td valign="top" align="middle">Yes</td>
  </tr>
  <tr>
    <td valign="top">value</td>
    <td valign="top">the value of the HTTP request header. You may alternatively
      specify the value as text between the beginning and ending header tags.</td>
    <td valign="center" align="middle">Yes</td>
  </tr>
</table>
<h3>Quirky Limitations of java.net classes</h3>
Multiple HTTP headers can with the same name can <b>not</b> be set, even 
though the protocol permits it. Java1.1 and Java 1.2 <i>may</i> permit multiple 
cookies to be set, but this behaviour is explicitly not supported on Java1.3,
as someone went and change the code to stop this (Java bug ID #4242254). 
You need to set multiple cookies in one go and hope the far end can handle it
<p>
Bug ID #4160499 covers another issue, to wit: some versions of Java throw
exceptions when an error code is greater than 400 and the dest file isn't
one of a few simple file types, but Java 1.2 and 1.3 do not. So there
is no way to get the error text when a jsp page throws some exception.
<p>
Also, although this isnt going to be filed until we have a short
test case, but if you recieve a short response with less content than 
the content-length header promises, the library seems to silently 
reduce the content length header to match, which seems the wrong action.     

  
  
<h2><a name="httpget">HttpGet</a></h2>
<h3>Description</h3>

<p>Accesses a URL to retrieve a file or to cause some action on the server.</p>

<p> This task should be preferred above the <a href="#cvs">CVS task</a> when doing 
  automated builds. CVS is significantly slower than loading a compressed archive 
  with http/ftp. This task will also retrieve content using other supported protocols, 
  such as ftp: and file: 
<p>All the attributes of httptask may be used. Note that a quirk of the implementation 
  of the http client in java makes it impossible to reliably fetch the response 
  details from any unsuccessful request against a URL which doesn't end in '.htm,.html 
  or .txt'. This means that if the task is used to compile jsp pages by issuing 
  request against them, the text details of any errors will not be picked up. 
<h3>Examples</h3>

<pre>  &lt;httpget url=&quot;http://jakarta.apache.org/&quot; dest=&quot;help/index.html&quot;/&gt;</pre>
<p>Fetches the index page of http://jakarta.apache.org/, and stores it in the 
  file <code>help/index.html</code>. </p>

<pre>    &lt;httpget src=&quot;http://jakarta.apache.org/builds/tomcat/nightly/ant.zip&quot;
        dest=&quot;optional.jar&quot;
        verbose=&quot;true&quot;
        usetimestamp=&quot;true&quot;
	&gt;
        &lt;header name=&quot;Cookie&quot; value=&quot;someid=43ff2b&quot;/&gt;
    &lt;/httpget&gt;</pre>
<p> Retrieves the nightly ant build from the tomcat distribution, if the local 
  copy is missing or out of date. Uses the verbose option for progress information. 
  A cookie is supplied for the server's benefit.</p>
<pre>    &lt;httpget url="https://www.pizzaservices.com/prices.jsp"
         dest="pizza-prices.xml&quot;&gt;
       &lt;param name=&quot;zipcode&quot;&gt;57340&lt;/param&gt;
       &lt;param name=&quot;pizza&quot;&gt;pepperoni&lt;/param&gt;
    &lt;/httpget&gt;</pre>
<p>Builds a URL by adding parameters (&quot;?zipcode=57340&amp;pizza=pepperoni&quot;) 
  to the base URL and then fetches the contents (fictional example)</p>
<h2><a name="httphead">HttpHead</a> </h2>
<p>The http HEAD request is similar to the normal GET request , except it, by 
  definition, returns no content, just a success code and http headers. Accordingly, 
  the destination properties of the base class -<i>dest</i> and -, <i>destinationpropertyname</i>) 
  are not supported -any attempt to use them will result in a build failure. Note 
  also that the http and https protocols are the only protocols supported. </p>
<p>
HttpHead is useful for triggering server side actions, but note that many servers
interpret a HEAD very differently from a GET. An HttpGet request with the
return data discarded is often a more reliable approach.
</p>

<p> Where head can be useful is in testing for the availability and reachability 
  of servers, such as in the following test for apache being reachable, which 
  sets a variable on success:- 
<pre>
    &lt;httphead url="http://www.apache.org/"
    	 failonerror="false"
    	 successproperty="reachable.apache"
    	 /&gt;
</pre>

<p>Note that sometimes a missing file on a mis-configured server still generates 
  a successful '200' response to a GET request -and returns a 'missing' file page, 
  but a HEAD request will reliably pick up the 'missing file' error. </p>
<h2><a name="httppost">HttpPost</a></h2>

<p>This implements the POST request. Supplied parameter data is turned into form 
  data and sent as the body of the request, rather than appended to the URL. If 
  a file to upload is specified instead, using <i>uploadFile</i>, the parameter 
  values are ignored. Instead the content type of the file is sent in the header 
  -based on the <i>contentType</i> attribute or what the java runtime thinks the 
  content type is based on the file extension. The file is uploaded. </p>

<p>Like HttpGet, this command can return a content which can downloaded to a file,
  to a property, or just ignored.</p>

<p>This task adds two new attributes to the base set. </p>
<table cellspacing="0" cellpadding="2" border="1">
  <tr>
    <td valign="top" width="78"><b>Attribute</b></td>
    <td valign="top" width="559"><b>Description</b></td>
    <td valign="top" align="middle" width="62"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top" width="78">uploadFile</td>
    <td valign="top" width="559">a file to upload. when specified, all parameters
      are ignored.</td>
    <td valign="top" align="middle" width="62">
      <div align="center">no</div>
    </td>
  </tr>
  <tr>
    <td valign="top" width="78">contentType </td>
    <td valign="top" width="559">the type of the content (text/html, text/xml,
      application/binary, etc). Only of relevance when a file is being uploaded,
      and still optional in that case. </td>
    <td valign="center" align="middle" width="62">
      <div align="center">no</div>
    </td>
  </tr>
</table>
<h3></h3>
<pre>
   &lt;httppost url=&quot;http://www.example.com/servlet/docserver&quot;
           authtype=&quot;basic&quot; username=&quot;joe&quot; password=&quot;silly&quot;&gt;
       &lt;param name=&quot;action&quot; value=&quot;getdoc&quot;/&gt;
       &lt;param name=&quot;ISBN&quot;&gt;038550120X&lt;/param&gt;
       &lt;param name=&quot;pages&quot;&gt;19-20&lt;/param&gt;
       &lt;header name=&quot;Accept-Language&quot; value=&quot;en-us&quot;/&gt;
   &lt;/httppost&gt;</pre>
<p>Accesses a server at www.foo.com, passing a request to some servlet asking it
to retrieve several pages from a stored book. An HTTP header specifying
acceptable languages for the returned contents is also sent. Basic
authentication is used with a user name of &quot;joe&quot; and a password of
&quot;silly&quot;.</p>
<p>
<pre>    &lt;httppost url="https://www.pizzaservices.com"
         uploadFile="pizza-order.xml"
         contentType="text/xml"&gt;
</pre>
<p>Sends a pre-prepared order for a pizza to a pizza vendor accepting orders using 
  xml-rpc requests. (NB: fictional example) </p>
<h2><a name="SetProxy"></a>SetProxy</h2>
<p>This task configures the proxy settings for all http tasks which follow it 
  in the build. That includes the original Get task, but not the telnet and FTP 
  tasks. The proxy settings remain in place until changed or the build finishes, 
  and will also hold for other ant build files invoked and even non-forked java 
  invocations, and even URL resolutions of XML parsers running in the same JVM
  </p>
<table cellspacing="0" cellpadding="2" border="1">
  <tr> 
    <td valign="top" width="78"><b>Attribute</b></td>
    <td valign="top" width="559"><b>Description</b></td>
    <td valign="top" align="middle" width="62"><b>Required</b></td>
  </tr>
  <tr> 
    <td valign="top" width="78">proxyHost</td>
    <td valign="top" width="559">hostname of a web/ftp proxy server</td>
    <td valign="top" align="middle" width="62"> 
      <div align="center">no</div>
    </td>
  </tr>
  <tr> 
    <td valign="top" width="78">proxyPort </td>
    <td valign="top" width="559">integer; the port of the proxy server</td>
    <td valign="center" align="middle" width="62"> 
      <div align="center">no</div>
    </td>
  </tr>
  <tr> 
    <td valign="top" width="78">socksProxyHost</td>
    <td valign="top" width="559">hostname of a SOCKS4 proxy server</td>
    <td valign="center" align="middle" width="62"> 
      <div align="center">no</div>
    </td>
  </tr>
  <tr> 
    <td valign="top" width="78">socksProxyPort</td>
    <td valign="top" width="559">integer; port number of a SOCKS4 server (default=1080)</td>
    <td valign="center" align="middle" width="62"> 
      <div align="center">no</div>
    </td>
  </tr>
</table>
<h3></h3>
<p>Turn off all proxies</p>
<pre>    &lt;setproxy proxyhost=&quot;&quot; socksProxyHost=&quot;&quot; /&gt;</pre>
<p>Set web proxy to 'web-proxy:80'; do not make any changes to existing socks 
  settings (if any)</p>
<pre>    &lt;setproxy proxyHost=&quot;web-proxy&quot; proxyPort=&quot;80&quot;/&gt;</pre>
<p>Turn on socks</p>
<pre>    &lt;setproxy socksProxyHost=&quot;socks-server&quot; socksProxyPort=&quot;1080&quot;/&gt;</pre>
<p>Do nothing</p>
<pre>    &lt;setproxy/&gt;</pre>
<hr>
<p align="center">Copyright &copy; 2000,2001 Apache Software Foundation. All rights
Reserved.</p>

</body>
</html>






