{"id":1640,"date":"2018-05-07T12:14:34","date_gmt":"2018-05-07T12:14:34","guid":{"rendered":"http:\/\/capture.ccio.us\/?p=1640"},"modified":"2018-05-07T12:14:34","modified_gmt":"2018-05-07T12:14:34","slug":"making-asynchronous-requests-lucidworks-fusion-javascript-stage","status":"publish","type":"post","link":"https:\/\/capture.club\/portal\/2018\/05\/07\/making-asynchronous-requests-lucidworks-fusion-javascript-stage\/","title":{"rendered":"Making Asynchronous Requests &#8212; Lucidworks Fusion JavaScript Stage"},"content":{"rendered":"<body><p>\n  There are many ways you can make an asynchronous request in a JavaScript stage.\n  <\/p>\n<ol>\n<li>Using the Apache HTTP Client<\/li>\n<li>Using the native Java URL or URI classes<\/li>\n<li>Using the native Java HttpConnection class<\/li>\n<li>Using the Jsoup built-in connect() method<\/li>\n<\/ol>\n<h2>Examples of each<\/h2>\n<hr>\n<h3> 1) Apache HTTP Client<\/h3>\n<pre>\nfunction(doc) {\n   var BufferedReader = java.io.BufferedReader;\nvar InputStreamReader = java.io.InputStreamReader;\nvar userAgent = org.apache.http.HttpHeaders.USER_AGENT;\nvar HttpResponse = org.apache.http.HttpResponse;\nvar HttpClient = org.apache.http.client.HttpClient;\nvar HttpGet = org.apache.http.client.methods.HttpGet;\nvar HttpClientBuilder = org.apache.http.impl.client.HttpClientBuilder;\nvar StringBuffer = java.lang.StringBuffer;\nvar String = java.lang.String;\nvar e = java.lang.Exception;\nresult = new StringBuffer();\n        try {\n            var url = new String( \"http:\/\/www.google.com\/search?q=httpClient\");\n            var client = HttpClientBuilder.create().build();\n            var request = new HttpGet(url);\n             \/\/ add request header\n            request.addHeader(\"User-Agent\", userAgent);\n            var response = client.execute(request);\n            logger.info(\"RESPONSE Code : \" + response.getStatusLine().getStatusCode());\n            var rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));\n             result = new StringBuffer();\n            var line = \"\";\n            while ((line = rd.readLine()) !== null) {\n                result.append(line);\n            }\n        } catch (e) {\n           logger.error(e);\n        }\n       logger.info(result);\n   return doc;\n}\n<\/pre>\n<h3> <\/h3>\n<pre>\nfunction (url) {\n    var e = java.lang.Exception;\n    var URL = java.net.URL;\n    var BufferedReader = java.io.BufferedReader;\n    var InputStreamReader = java.io.InputStreamReader;\n    var String = java.lang.String;\n    var result = new String();\n    try {\n        var targetUrl = new URL(url);\n        var ins = new BufferedReader(new InputStreamReader(targetUrl.openStream()));\n        var inputLine = \"\";\n        while ((inputLine = ins.readLine()) !== null) {\n            \/\/logger.info(inputLine);\n            result += inputLine;\n        }\n        ins.close();\n        logger.info(\"Return RESULT: \" + result);\n    } catch (e) {\n        logger.error(e);\n    }\n    return result;\n}\n<\/pre>\n<h3>3) Using Java native HttpConnection <\/h3>\n<pre>\nfunction (docurl) {\n    var HttpURLConnection = java.net.HttpURLConnection;\n    var URL = java.net.URL;\n    var conn = java.net.HttpURLConnection;\n    var e = java.lang.Exception;\n    var len = 0;\n    try {\n        var url = new URL(docurl);\n        conn = url.openConnection();\n        conn.setRequestMethod(\"HEAD\");\n        conn.getInputStream();\n        len = conn.getContentLength();\n    } catch (e) {\n        len = -1;\n    } finally {\n        if(conn.disconnect){\n        conn.disconnect();\n        }\n    }\n   return len;\n};\n<\/pre>\n<h3> 4) JSoup Built-in<\/h3>\n<pre>\nfunction (doc) {\n        var doclist = java.util.ArrayList;\n        var Jsoup = org.jsoup.Jsoup;\n        var jdoc = org.jsoup.nodes.Document;\n        var ex = java.lang.Exception;\n try {\n           jdoc = Jsoup.connect(\"http:\/\/example.com\/\").get();\n         var title = jdoc.title();\n        } catch (ex) {\n            logger.error(ex);\n        }\n<\/pre>\n<p>Generally, these methods are internchangeable. However, you\u2019ll always want to consider your end goal and any particular constaints before makeing a decision.  For example, it\u2019s always best to try and use the native Java classes rather than third-parties, but sometimes the HttpClient just makes more sense. If you\u2019re planning to extract with JSoup, then you would like choose that route.  It all depends on what you\u2019re trying to accomplish.<\/p>\n<\/body>","protected":false},"excerpt":{"rendered":"<p>There are many ways you can make an asynchronous request in a JavaScript stage. Using the Apache HTTP Client Using the native Java URL or URI classes Using the native Java HttpConnection class Using the Jsoup built-in connect() method Examples of each 1) Apache HTTP Client function(doc) { var BufferedReader = java.io.BufferedReader; var InputStreamReader = [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-1640","post","type-post","status-publish","format-standard","hentry"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/posts\/1640","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/comments?post=1640"}],"version-history":[{"count":0,"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/posts\/1640\/revisions"}],"wp:attachment":[{"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/media?parent=1640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/categories?post=1640"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/capture.club\/portal\/wp-json\/wp\/v2\/tags?post=1640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}