com.gargoylesoftware.htmlunit.AjaxController Java Examples
The following examples show how to use
com.gargoylesoftware.htmlunit.AjaxController.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: XMLHttpRequest.java From htmlunit with Apache License 2.0 | 4 votes |
/** * Sends the specified content to the server in an HTTP request and receives the response. * @param content the body of the message being sent with the request */ @JsxFunction public void send(final Object content) { if (webRequest_ == null) { return; } prepareRequest(content); final Window w = getWindow(); final WebWindow ww = w.getWebWindow(); final WebClient client = ww.getWebClient(); final AjaxController ajaxController = client.getAjaxController(); final HtmlPage page = (HtmlPage) ww.getEnclosedPage(); final boolean synchron = ajaxController.processSynchron(page, webRequest_, async_); if (synchron) { doSend(Context.getCurrentContext()); } else { if (getBrowserVersion().hasFeature(XHR_FIRE_STATE_OPENED_AGAIN_IN_ASYNC_MODE)) { // quite strange but IE seems to fire state loading twice // in async mode (at least with HTML of the unit tests) setState(OPENED, Context.getCurrentContext()); } // Create and start a thread in which to execute the request. final Scriptable startingScope = w; final ContextFactory cf = ((JavaScriptEngine) client.getJavaScriptEngine()).getContextFactory(); final ContextAction<Object> action = new ContextAction<Object>() { @Override public Object run(final Context cx) { // KEY_STARTING_SCOPE maintains a stack of scopes @SuppressWarnings("unchecked") Deque<Scriptable> stack = (Deque<Scriptable>) cx.getThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE); if (null == stack) { stack = new ArrayDeque<>(); cx.putThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE, stack); } stack.push(startingScope); try { doSend(cx); } finally { stack.pop(); } return null; } @Override public String toString() { return "XMLHttpRequest " + webRequest_.getHttpMethod() + " '" + webRequest_.getUrl() + "'"; } }; final JavaScriptJob job = BackgroundJavaScriptFactory.theFactory(). createJavascriptXMLHttpRequestJob(cf, action); if (LOG.isDebugEnabled()) { LOG.debug("Starting XMLHttpRequest thread for asynchronous request"); } jobID_ = ww.getJobManager().addJob(job, page); } }
Example #2
Source File: XMLHTTPRequest.java From htmlunit with Apache License 2.0 | 4 votes |
/** * Sends an HTTP request to the server and receives a response. * @param body the body of the message being sent with the request. */ @JsxFunction public void send(final Object body) { if (webRequest_ == null) { setState(STATE_DONE, Context.getCurrentContext()); return; } if (sent_) { throw Context.reportRuntimeError("Unspecified error (request already sent)."); } sent_ = true; prepareRequest(body); // quite strange but IE seems to fire state loading twice setState(STATE_OPENED, Context.getCurrentContext()); final Window w = getWindow(); final WebClient client = w.getWebWindow().getWebClient(); final AjaxController ajaxController = client.getAjaxController(); final HtmlPage page = (HtmlPage) w.getWebWindow().getEnclosedPage(); final boolean synchron = ajaxController.processSynchron(page, webRequest_, async_); if (synchron) { doSend(Context.getCurrentContext()); } else { // Create and start a thread in which to execute the request. final Scriptable startingScope = w; final ContextFactory cf = ((JavaScriptEngine) client.getJavaScriptEngine()).getContextFactory(); final ContextAction<Object> action = new ContextAction<Object>() { @Override public Object run(final Context cx) { // KEY_STARTING_SCOPE maintains a stack of scopes @SuppressWarnings("unchecked") Deque<Scriptable> stack = (Deque<Scriptable>) cx.getThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE); if (null == stack) { stack = new ArrayDeque<>(); cx.putThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE, stack); } stack.push(startingScope); try { doSend(cx); } finally { stack.pop(); } return null; } }; final JavaScriptJob job = BackgroundJavaScriptFactory.theFactory(). createJavascriptXMLHttpRequestJob(cf, action); if (LOG.isDebugEnabled()) { LOG.debug("Starting XMLHTTPRequest thread for asynchronous request"); } jobID_ = w.getWebWindow().getJobManager().addJob(job, page); } }
Example #3
Source File: XMLHttpRequest.java From HtmlUnit-Android with Apache License 2.0 | 4 votes |
/** * Sends the specified content to the server in an HTTP request and receives the response. * @param content the body of the message being sent with the request */ @JsxFunction public void send(final Object content) { if (webRequest_ == null) { return; } prepareRequest(content); final Window w = getWindow(); final WebClient client = w.getWebWindow().getWebClient(); final AjaxController ajaxController = client.getAjaxController(); final HtmlPage page = (HtmlPage) w.getWebWindow().getEnclosedPage(); final boolean synchron = ajaxController.processSynchron(page, webRequest_, async_); if (synchron) { doSend(Context.getCurrentContext()); } else { if (getBrowserVersion().hasFeature(XHR_FIRE_STATE_OPENED_AGAIN_IN_ASYNC_MODE)) { // quite strange but IE seems to fire state loading twice // in async mode (at least with HTML of the unit tests) setState(OPENED, Context.getCurrentContext()); } // Create and start a thread in which to execute the request. final Scriptable startingScope = w; final ContextFactory cf = ((JavaScriptEngine) client.getJavaScriptEngine()).getContextFactory(); final ContextAction action = new ContextAction() { @Override public Object run(final Context cx) { // KEY_STARTING_SCOPE maintains a stack of scopes @SuppressWarnings("unchecked") Stack<Scriptable> stack = (Stack<Scriptable>) cx.getThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE); if (null == stack) { stack = new Stack<>(); cx.putThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE, stack); } stack.push(startingScope); try { doSend(cx); } finally { stack.pop(); } return null; } @Override public String toString() { return "XMLHttpRequest " + webRequest_.getHttpMethod() + " '" + webRequest_.getUrl() + "'"; } }; final JavaScriptJob job = BackgroundJavaScriptFactory.theFactory(). createJavascriptXMLHttpRequestJob(cf, action); if (LOG.isDebugEnabled()) { LOG.debug("Starting XMLHttpRequest thread for asynchronous request"); } jobID_ = w.getWebWindow().getJobManager().addJob(job, page); } }
Example #4
Source File: XMLHTTPRequest.java From HtmlUnit-Android with Apache License 2.0 | 4 votes |
/** * Sends an HTTP request to the server and receives a response. * @param body the body of the message being sent with the request. */ @JsxFunction public void send(final Object body) { if (webRequest_ == null) { setState(STATE_DONE, Context.getCurrentContext()); return; } if (sent_) { throw Context.reportRuntimeError("Unspecified error (request already sent)."); } sent_ = true; prepareRequest(body); // quite strange but IE seems to fire state loading twice setState(STATE_OPENED, Context.getCurrentContext()); final Window w = getWindow(); final WebClient client = w.getWebWindow().getWebClient(); final AjaxController ajaxController = client.getAjaxController(); final HtmlPage page = (HtmlPage) w.getWebWindow().getEnclosedPage(); final boolean synchron = ajaxController.processSynchron(page, webRequest_, async_); if (synchron) { doSend(Context.getCurrentContext()); } else { // Create and start a thread in which to execute the request. final Scriptable startingScope = w; final ContextFactory cf = ((JavaScriptEngine) client.getJavaScriptEngine()).getContextFactory(); final ContextAction action = new ContextAction() { @Override public Object run(final Context cx) { // KEY_STARTING_SCOPE maintains a stack of scopes @SuppressWarnings("unchecked") Stack<Scriptable> stack = (Stack<Scriptable>) cx.getThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE); if (null == stack) { stack = new Stack<>(); cx.putThreadLocal(JavaScriptEngine.KEY_STARTING_SCOPE, stack); } stack.push(startingScope); try { doSend(cx); } finally { stack.pop(); } return null; } }; final JavaScriptJob job = BackgroundJavaScriptFactory.theFactory(). createJavascriptXMLHttpRequestJob(cf, action); if (LOG.isDebugEnabled()) { LOG.debug("Starting XMLHTTPRequest thread for asynchronous request"); } jobID_ = w.getWebWindow().getJobManager().addJob(job, page); } }
Example #5
Source File: GSWorker.java From slr-toolkit with Eclipse Public License 1.0 | 4 votes |
public GSWorker(PrintWriter output, String asQ, String asEpq, String asOq, String asEq, String asOcct, String asSauthors, String asPublication, String asYlo, String asYhi) { webClient = new WebClient(BrowserVersion.CHROME); webClient.getOptions().setJavaScriptEnabled(true); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); webClient.setAjaxController(new AjaxController() { @Override public boolean processSynchron(HtmlPage page, WebRequest request, boolean async) { return true; } }); webClient.getOptions().setScreenHeight(768); webClient.getOptions().setScreenWidth(1024); webClient.getCookieManager().setCookiesEnabled(true); base = scholar + "scholar?"; try { if (asQ == null) { asQ = ""; } base += "as_q=" + URLEncoder.encode(asQ.replace(" ", "+"), ENCODING) + "&"; if (asEpq == null) { asEpq = ""; } base += "as_epq=" + URLEncoder.encode(asEpq.replace(" ", "+"), ENCODING) + "&"; if (asOq == null) { asOq = ""; } base += "as_oq=" + URLEncoder.encode(asOq.replace(" ", "+"), ENCODING) + "&"; if (asEq == null) { asEq = ""; } base += "as_eq=" + URLEncoder.encode(asEq.replace(" ", "+"), ENCODING) + "&"; if (asOcct == null) { asOcct = ""; } base += "as_occt=" + URLEncoder.encode(asOcct.replace(" ", "+"), ENCODING) + "&"; if (asSauthors == null) { asSauthors = ""; } base += "as_sauthors=" + URLEncoder.encode(asSauthors.replace(" ", "+"), ENCODING) + "&"; if (asPublication == null) { asPublication = ""; } base += "as_publication=" + URLEncoder.encode(asPublication.replace(" ", "+"), ENCODING) + "&"; if (asYlo == null) { asYlo = ""; } base += "as_ylo=" + URLEncoder.encode(asYlo.replace(" ", "+"), ENCODING) + "&"; if (asYhi == null) { asYhi = ""; } base += "as_yhi=" + URLEncoder.encode(asYhi.replace(" ", "+"), ENCODING) + "&"; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } base += "hl=de&as_sdt=0%2C5"; this.out = output; out.write("@Comment { Base-URL: " + base + " }\n\n"); out.flush(); }