ossiejhmoore icon

OScript HttpGet Leveraging Apache HttpClient

ossiejhmoore | PRO | 08/18/12 06:16:19 PM UTC | 0 ⭐ | 378 👁️ | Never ⏰ | []
text |

3.44 KB

|

None

|

0 👍

/

0 👎

/********************************************************************
 *  Leverages the Apache HTTPClient library to perform simple http
 *  and https GET operations from OScript.
 *
 *  Note: The Apahce library supports many more features than this
 *        simple HTTP GET style operations. These include BASIC,
 *        Digest and form based authentication, performing POST
 *        operations, etc. I only needed the ability to do a GET
 *        so I implmeneted it driectly in OScript Here. If you want
 *        to do more complex operations, I would strongly suggest
 *        implementing it in Java and then using JavaObject to
 *        leverage your Java class library.
 *
 *  Prerequisites:
 *
 *  1. You have downloaded the Apahce HTTPClient library from:
 *     http://hc.apache.org/httpcomponents-client-ga
 *  2. You have added the seven jar files to Livelink's classpath
 *     by (a) dropping them in an 'ojlib' folder of your module
 *     or (b) dropping them in [OTHOME]/ojlib
 *  3. If you want Java commands to work when running builder,
 *     don't forget to add '-loadjavavm' to your Builder shortcut.
 *     (right click on the Builder shortcut, properties, target)
 *
 * Example Usage:
 *
 *  String url = "http://www.google.com"
 *  Assoc retVal = $aaamod.Utils.HttpGet(url)
 *  if (retVal.OK)
 *    echo(retVal.Data)
 *  else
 *    echo(Str.Format("Error fetching %1! %2.", url, retVal.ErrMsg)
 *  end
 *  url = "https://www.google.com"
 *  retVal = $aaamod.Utils.HttpGet(url)
 *  if (retVal.OK)
 *    echo(retVal.Data)
 *  else
 *    echo(Str.Format("Error fetching %1! %2.", url, retVal.ErrMsg)
 *  end
 *
 * Input Parameters:
 *
 *  url - The URL you want to GET
 *
 * Output Parameters:
 *
 *  retVal.Ok       - Indiacates whether the operation worked
 *  retVal.ErrMsg   - Error message for failed operations.
 *  retVal.ApiError - Actual error object if available.
 *  retVal.Url      - Url fetched
 *  retVal.Data     - Content of the web page as a String.
 *  
 ********************************************************************/
function Assoc HTTPGet(String url = "https://www.google.com")
 	Assoc retVal
	retVal.Ok       = false
	retVal.ErrMsg   = Undefined
	retVal.ApiError = Undefined
	retVal.Data     = Undefined
 	Dynamic jo = JavaObject
	JavaObject request, response, content
	String data
 	//build request object
	request = jo.InvokeStaticMethod("org.apache.http.client.fluent.Request","Get", { url })
	if (IsError(request))
		retVal.ErrMsg   = Str.Format("%1", request)
		retVal.ApiError = request
	else
 		//build response object from request
		response = request.InvokeMethod("execute", {})
		if (IsError(response))
			retVal.ErrMsg   = Str.Format("%1", response)
			retVal.ApiError = response
		else
 			//get content object from response
			content = response.InvokeMethod("returnContent", {})
			if (IsError(content))
				retVal.ErrMsg   = Str.Format("%1", content)
				retVal.ApiError = content
			else
 				//read text of web page into data
				data = content.InvokeMethod("asString", {})
				if (IsError(data))
					retVal.ErrMsg   = Str.Format("%1", content)
					retVal.ApiError = content
				else
					retVal.Ok   = true
					retVal.Url  = url
					retVal.Data = data
				end
			end
 		end
	end
 	if (!retVal.Ok)
		if (IsUndefined(retVal.ErrMsg))
			retVal.ErrMsg = "Unexpected error occurred in HTTPGet"
		end
	end
 	return retVal
 end

Comments