Class XMLHttpRequest

All Implemented Interfaces:
Serializable, Cloneable, org.htmlunit.corejs.javascript.ConstProperties, org.htmlunit.corejs.javascript.debug.DebuggableObject, org.htmlunit.corejs.javascript.Scriptable, org.htmlunit.corejs.javascript.SymbolScriptable

public class XMLHttpRequest extends XMLHttpRequestEventTarget
A JavaScript object for an XMLHttpRequest.
See Also:
  • Field Details

    • LOG

      private static final org.apache.commons.logging.Log LOG
    • UNSENT

      public static final int UNSENT
      The object has been created, but not initialized (the open() method has not been called).
      See Also:
    • OPENED

      public static final int OPENED
      The object has been created, but the send() method has not been called.
      See Also:
    • HEADERS_RECEIVED

      public static final int HEADERS_RECEIVED
      The send() method has been called, but the status and headers are not yet available.
      See Also:
    • LOADING

      public static final int LOADING
      Some data has been received.
      See Also:
    • DONE

      public static final int DONE
      All the data has been received; the complete data is available in responseBody and responseText.
      See Also:
    • RESPONSE_TYPE_DEFAULT

      private static final String RESPONSE_TYPE_DEFAULT
      See Also:
    • RESPONSE_TYPE_ARRAYBUFFER

      private static final String RESPONSE_TYPE_ARRAYBUFFER
      See Also:
    • RESPONSE_TYPE_BLOB

      private static final String RESPONSE_TYPE_BLOB
      See Also:
    • RESPONSE_TYPE_DOCUMENT

      private static final String RESPONSE_TYPE_DOCUMENT
      See Also:
    • RESPONSE_TYPE_JSON

      private static final String RESPONSE_TYPE_JSON
      See Also:
    • RESPONSE_TYPE_TEXT

      private static final String RESPONSE_TYPE_TEXT
      See Also:
    • ALLOW_ORIGIN_ALL

      private static final String ALLOW_ORIGIN_ALL
      See Also:
    • ALL_PROPERTIES_

      private static final String[] ALL_PROPERTIES_
    • PROHIBITED_HEADERS_

      private static final HashSet<String> PROHIBITED_HEADERS_
    • state_

      private int state_
    • webRequest_

      private WebRequest webRequest_
    • async_

      private boolean async_
    • jobID_

      private int jobID_
    • webResponse_

      private WebResponse webResponse_
    • overriddenMimeType_

      private String overriddenMimeType_
    • caseSensitiveProperties_

      private final boolean caseSensitiveProperties_
    • withCredentials_

      private boolean withCredentials_
    • isSameOrigin_

      private boolean isSameOrigin_
    • timeout_

      private int timeout_
    • aborted_

      private boolean aborted_
    • responseType_

      private String responseType_
  • Constructor Details

    • XMLHttpRequest

      public XMLHttpRequest()
      Creates a new instance.
    • XMLHttpRequest

      public XMLHttpRequest(boolean caseSensitiveProperties)
      Creates a new instance.
      Parameters:
      caseSensitiveProperties - if properties and methods are case sensitive
  • Method Details

    • jsConstructor

      public void jsConstructor()
      JavaScript constructor.
      Overrides:
      jsConstructor in class XMLHttpRequestEventTarget
    • setState

      private void setState(int state)
      Sets the state as specified and invokes the state change handler if one has been set.
      Parameters:
      state - the new state
    • fireJavascriptEvent

      private void fireJavascriptEvent(String eventName)
    • fireJavascriptEventIgnoreAbort

      private void fireJavascriptEventIgnoreAbort(String eventName)
    • getReadyState

      public int getReadyState()
      Returns the current state of the HTTP request. The possible values are:
      • 0 = unsent
      • 1 = opened
      • 2 = headers_received
      • 3 = loading
      • 4 = done
      Returns:
      the current state of the HTTP request
    • getResponseType

      public String getResponseType()
      Returns:
      the responseType property
    • setResponseType

      public void setResponseType(String responseType)
      Sets the responseType property.
      Parameters:
      responseType - the responseType property.
    • getResponse

      public Object getResponse()
      Returns:
      returns the response's body content as an ArrayBuffer, Blob, Document, JavaScript Object, or DOMString, depending on the value of the request's responseType property.
    • getResponseText

      public String getResponseText()
      Returns a string version of the data retrieved from the server.
      Returns:
      a string version of the data retrieved from the server
    • getResponseXML

      public Object getResponseXML()
      Returns a DOM-compatible document object version of the data retrieved from the server.
      Returns:
      a DOM-compatible document object version of the data retrieved from the server
    • getStatus

      public int getStatus()
      Returns the numeric status returned by the server, such as 404 for "Not Found" or 200 for "OK".
      Returns:
      the numeric status returned by the server
    • getStatusText

      public String getStatusText()
      Returns the string message accompanying the status code, such as "Not Found" or "OK".
      Returns:
      the string message accompanying the status code
    • abort

      public void abort()
      Cancels the current HTTP request.
    • getAllResponseHeaders

      public String getAllResponseHeaders()
      Returns the labels and values of all the HTTP headers.
      Returns:
      the labels and values of all the HTTP headers
    • getResponseHeader

      public String getResponseHeader(String headerName)
      Retrieves the value of an HTTP header from the response body.
      Parameters:
      headerName - the (case-insensitive) name of the header to retrieve
      Returns:
      the value of the specified HTTP header
    • open

      public void open(String method, Object urlParam, Object asyncParam, Object user, Object password)
      Assigns the destination URL, method and other optional attributes of a pending request.
      Parameters:
      method - the method to use to send the request to the server (GET, POST, etc)
      urlParam - the URL to send the request to
      asyncParam - Whether or not to send the request to the server asynchronously, defaults to true
      user - If authentication is needed for the specified URL, the username to use to authenticate
      password - If authentication is needed for the specified URL, the password to use to authenticate
    • isSameOrigin

      private static boolean isSameOrigin(URL originUrl, URL newUrl)
    • send

      public void send(Object content)
      Sends the specified content to the server in an HTTP request and receives the response.
      Parameters:
      content - the body of the message being sent with the request
    • prepareRequestContent

      private void prepareRequestContent(Object content)
      Prepares the WebRequest that will be sent.
      Parameters:
      content - the content to send
    • doSend

      void doSend()
      The real send job.
    • isPreflight

      private boolean isPreflight()
    • isPreflightAuthorized

      private boolean isPreflightAuthorized(WebResponse preflightResponse)
    • isPreflightHeader

      private static boolean isPreflightHeader(String name, String value)
      Parameters:
      name - header name (MUST be lower-case for performance reasons)
      value - header value
    • setRequestHeader

      public void setRequestHeader(String name, String value)
      Sets the specified header to the specified value. The open method must be called before this method, or an error will occur.
      Parameters:
      name - the name of the header being set
      value - the value of the header being set
    • isAuthorizedHeader

      static boolean isAuthorizedHeader(String name)
      Not all request headers can be set from JavaScript.
      Parameters:
      name - the header name
      Returns:
      true if the header can be set from JavaScript
      See Also:
    • overrideMimeType

      public void overrideMimeType(String mimeType)
      Override the mime type returned by the server (if any). This may be used, for example, to force a stream to be treated and parsed as text/xml, even if the server does not report it as such. This must be done before the send method is invoked.
      Parameters:
      mimeType - the type used to override that returned by the server (if any)
      See Also:
    • isWithCredentials

      public boolean isWithCredentials()
      Returns the withCredentials property.
      Returns:
      the withCredentials property
    • setWithCredentials

      public void setWithCredentials(boolean withCredentials)
      Sets the withCredentials property.
      Parameters:
      withCredentials - the withCredentials property.
    • get

      public Object get(String name, org.htmlunit.corejs.javascript.Scriptable start)
      Gets a named property from the object. Normally HtmlUnit objects don't need to overwrite this method as properties are defined on the prototypes from the XML configuration. In some cases where "content" of object has priority compared to the properties consider using utility HtmlUnitScriptable.getWithPreemption(String).
      Specified by:
      get in interface org.htmlunit.corejs.javascript.Scriptable
      Overrides:
      get in class HtmlUnitScriptable
    • put

      public void put(String name, org.htmlunit.corejs.javascript.Scriptable start, Object value)
      Specified by:
      put in interface org.htmlunit.corejs.javascript.Scriptable
      Overrides:
      put in class HtmlUnitScriptable
    • getUpload

      public XMLHttpRequestUpload getUpload()
      Returns the upload property.
      Returns:
      the upload property
    • getOnreadystatechange

      public org.htmlunit.corejs.javascript.Function getOnreadystatechange()
      Returns the event handler that fires on ready state change.
      Overrides:
      getOnreadystatechange in class XMLHttpRequestEventTarget
      Returns:
      the event handler that fires on ready state change
    • setOnreadystatechange

      public void setOnreadystatechange(org.htmlunit.corejs.javascript.Function readyStateChangeHandler)
      Sets the event handler that fires on ready state change.
      Overrides:
      setOnreadystatechange in class XMLHttpRequestEventTarget
      Parameters:
      readyStateChangeHandler - the event handler that fires on ready state change
    • getTimeout

      public int getTimeout()
    • setTimeout

      public void setTimeout(int timeout)