/* * GNU LESSER GENERAL PUBLIC LICENSE Copyright (C) 2006 The Lobo Project * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Contact info: lobochief@users.sourceforge.net */ /* * Created on Nov 13, 2005 */ package com.nvarghese.beowulf.common.cobra.html; import java.awt.Image; import java.net.URL; import org.w3c.dom.Document; /** * The <code>HttpRequest</code> interface should be implemented to provide web * request capabilities. It is used a similar manner to * <code>XMLHttpRequest</code> in Javascript (AJAX). Normally, a listener will * be added by calling * {@link #addReadyStateChangeListener(ReadyStateChangeListener)}, the method * {@link #open(String, URL, boolean, String, String) open} will be called, and * finally, {@link #send(String)} will be called to complete the request. * * @see UserAgentContext#createHttpRequest() */ public interface HttpRequest { /** * The uninitialized request state. */ public static final int STATE_UNINITIALIZED = 0; /** * The loading request state. The <code>open</code> method has been called, * but a response has not been received yet. */ public static final int STATE_LOADING = 1; /** * The loaded request state. Headers and status are now available. */ public static final int STATE_LOADED = 2; /** * The interactive request state. Downloading response. */ public static final int STATE_INTERACTIVE = 3; /** * The complete request state. All operations are finished. */ public static final int STATE_COMPLETE = 4; /** * Gets the state of the request, a value between 0 and 4. * * @return A value corresponding to one of the STATE* constants in this * class. */ public int getReadyState(); /** * Gets the request response as text. */ public String getResponseText(); /** * Gets the request response as an XML DOM. */ public Document getResponseXML(); /** * Gets the request response as an AWT image. */ public Image getResponseImage(); /** * Gets the request response bytes. */ public byte[] getResponseBytes(); /** * Gets the status of the response. Note that this can be 0 for file * requests in addition to 200 for successful HTTP requests. */ public int getStatus(); /** * Gets the status text of the request, e.g. "OK" for 200. */ public String getStatusText(); /** * Aborts an ongoing request. */ public void abort(); /** * Gets a string with all the response headers. */ public String getAllResponseHeaders(); /** * Gets a response header value. * * @param headerName * The name of the header. */ public String getResponseHeader(String headerName); /** * Sets a request header * * @param headerName * @param value */ public void setRequestHeader(String headerName, String value); /** * Starts an asynchronous request. * * @param method * The request method. * @param url * The destination URL. */ public void open(String method, String url) throws java.io.IOException; /** * Opens an asynchronous request. * * @param method * The request method. * @param url * The destination URL. */ public void open(String method, URL url) throws java.io.IOException; /** * Opens an request. * * @param method * The request method. * @param url * The destination URL. * @param asyncFlag * Whether the request is asynchronous. */ public void open(String method, URL url, boolean asyncFlag) throws java.io.IOException; /** * Opens a request. * * @param method * The request method. * @param url * The destination URL. * @param asyncFlag * Whether the request should be asynchronous. */ public void open(String method, String url, boolean asyncFlag) throws java.io.IOException; /** * Opens a request. * * @param method * The request method. * @param url * The destination URL. * @param asyncFlag * Whether the request should be asynchronous. * @param userName * The HTTP authentication user name. */ public void open(String method, java.net.URL url, boolean asyncFlag, String userName) throws java.io.IOException; /** * Opens a request. * * @param method * The request method. * @param url * The destination URL. * @param asyncFlag * Whether the request should be asynchronous. * @param userName * The HTTP authentication user name. * @param password * The HTTP authentication password. */ public void open(String method, java.net.URL url, boolean asyncFlag, String userName, String password) throws java.io.IOException; /** * Sends POST content if any. * * @param content * POST content or <code>null</code> for GET requests. * @throws java.io.IOException */ public void send(String content) throws java.io.IOException; public boolean wasSend(); /** * Adds a listener of ReadyState changes. The listener should be invoked * even in the case of errors. * * @param listener * An instanceof of * {@link org.lobobrowser.html.ReadyStateChangeListener} */ public void addReadyStateChangeListener(ReadyStateChangeListener listener); }