+ open: function(method, url, async, user, password){
+ this.readyState = 1;
+ if (async)
+ this.async = true;
+ this.method = method || "GET";
+ this.url = url;
+ this.onreadystatechange();
+ },
+ setRequestHeader: function(header, value){
+ this.headers[header] = value;
+ },
+ getResponseHeader: function(header){ },
+ send: function(data){
+ function makeRequest(){
+ var url = new java.net.URL(this.url),
+ connection = url.openConnection();
+
+ // Add headers to Java connection
+ for (var header in this.headers)
+ connection.addRequestProperty(header, this.headers[header]);
+
+ connection.connect();
+
+ // Stick the response headers into responseHeaders
+ for (i=0; ; i++) {
+ var headerName = connection.getHeaderFieldKey(i);
+ var headerValue = connection.getHeaderField(i);
+ if (!headerName && !headerValue) break;
+ if (headerName)
+ this.responseHeaders[headerName] = headerValue;
+ }
+
+ this.readyState = 4;
+ this.status = parseInt(connection.responseCode);
+ this.statusText = connection.responseMessage;
+
+ var stream = new java.io.InputStreamReader(
+ connection.getInputStream()),
+ buffer = new java.io.BufferedReader(stream),
+ line;
+
+ while ((line = buffer.readLine()) != null)
+ this.responseText += line;
+
+ try {
+ this.responseXML = new DOMDocument(this.responseText);
+ } catch(e) {
+ this.responseXML = null;
+ }
+
+ this.onreadystatechange();
+ }
+
+ if (this.async)
+ (new java.lang.Thread(new java.lang.Runnable({
+ run: makeRequest
+ }))).start();
+ else
+ makeRequest();
+ },
+ abort: function(){},
+ onreadystatechange: function(){},
+ getResponseHeader: function(header){
+ if (this.readyState < 3)
+ throw new Error("INVALID_STATE_ERR");
+ else {
+ var returnedHeaders = [];
+ for (var rHeader in this.responseHeaders) {
+ if (rHeader.match(new Regexp(header, "i")))
+ returnedHeaders.push(this.responseHeaders[rHeader]);
+ }
+
+ if (returnedHeaders.length)
+ return returnedHeaders.join(", ");
+ }
+
+ return null;
+ },
+ getAllResponseHeaders: function(header){
+ if (this.readyState < 3)
+ throw new Error("INVALID_STATE_ERR");
+ else {
+ var returnedHeaders = [];
+
+ for (var header in this.responseHeaders)
+ returnedHeaders.push( header + ": " + this.responseHeaders[header] );
+
+ return returnedHeaders.join("\r\n");
+ }
+ },
+ async: true,