Class XMLHttpRequest

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.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:
    W3C XMLHttpRequest, Safari documentation, Serialized Form
    • Field Detail

      • 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:
        Constant Field Values
      • OPENED

        public static final int OPENED
        The object has been created, but the send() method has not been called.
        See Also:
        Constant Field Values
      • 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:
        Constant Field Values
      • DONE

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

        private static final java.lang.String RESPONSE_TYPE_DEFAULT
        See Also:
        Constant Field Values
      • RESPONSE_TYPE_ARRAYBUFFER

        private static final java.lang.String RESPONSE_TYPE_ARRAYBUFFER
        See Also:
        Constant Field Values
      • RESPONSE_TYPE_BLOB

        private static final java.lang.String RESPONSE_TYPE_BLOB
        See Also:
        Constant Field Values
      • RESPONSE_TYPE_DOCUMENT

        private static final java.lang.String RESPONSE_TYPE_DOCUMENT
        See Also:
        Constant Field Values
      • RESPONSE_TYPE_JSON

        private static final java.lang.String RESPONSE_TYPE_JSON
        See Also:
        Constant Field Values
      • RESPONSE_TYPE_TEXT

        private static final java.lang.String RESPONSE_TYPE_TEXT
        See Also:
        Constant Field Values
      • ALLOW_ORIGIN_ALL

        private static final java.lang.String ALLOW_ORIGIN_ALL
        See Also:
        Constant Field Values
      • ALL_PROPERTIES_

        private static final java.lang.String[] ALL_PROPERTIES_
      • PROHIBITED_HEADERS_

        private static final java.util.HashSet<java.lang.String> PROHIBITED_HEADERS_
      • state_

        private int state_
      • async_

        private boolean async_
      • jobID_

        private int jobID_
      • overriddenMimeType_

        private java.lang.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 java.lang.String responseType_
    • Constructor Detail

      • 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 Detail

      • 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​(java.lang.String eventName)
      • fireJavascriptEventIgnoreAbort

        private void fireJavascriptEventIgnoreAbort​(java.lang.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 java.lang.String getResponseType()
        Returns:
        the responseType property
      • setResponseType

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

        public java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.String getAllResponseHeaders()
        Returns the labels and values of all the HTTP headers.
        Returns:
        the labels and values of all the HTTP headers
      • getResponseHeader

        public java.lang.String getResponseHeader​(java.lang.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​(java.lang.String method,
                         java.lang.Object urlParam,
                         java.lang.Object asyncParam,
                         java.lang.Object user,
                         java.lang.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​(java.net.URL originUrl,
                                            java.net.URL newUrl)
      • send

        public void send​(java.lang.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​(java.lang.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​(java.lang.String name,
                                                 java.lang.String value)
        Parameters:
        name - header name (MUST be lower-case for performance reasons)
        value - header value
      • setRequestHeader

        public void setRequestHeader​(java.lang.String name,
                                     java.lang.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​(java.lang.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:
        W3C doc
      • overrideMimeType

        public void overrideMimeType​(java.lang.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:
        XUL Planet
      • 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 java.lang.Object get​(java.lang.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​(java.lang.String name,
                        org.htmlunit.corejs.javascript.Scriptable start,
                        java.lang.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)