How to access query string arguments with AS3

Found a great blog post with an ActionScript 2 class that parses the current URL and creates accessible properties out of query string arguments: https://blog.circlecube.com/2008/03/20/get-current-url-and-query-string-parameters-to-flash-tutorial/

I needed something to parse any URL, so I made a few adjustments and converted the class to be able to access query string arguments with AS3. Here’s the updated code:

package
{
	import flash.external.*;

	public class QueryString
	{
		private var _queryString:String;
		private var _all:String;
		private var _params:Object;

		public function QueryString(url:String='')
		{
			readQueryString(url);
		}
		public function get getQueryString():String
		{
			return _queryString;
		}
		public function get url():String
		{
			return _all;
		}
		public function get parameters():Object
		{
			return _params;
		}

		private function readQueryString(url:String=''):void
		{
			_params = new Object();
			try
			{
				_all = (url.length > 0) ? url : ExternalInterface.call("window.location.href.toString");
				_queryString = (url.length > 0) ? url.split("?")[1] : ExternalInterface.call("window.location.search.substring", 1);
				if(_queryString)
				{
					var allParams:Array = _queryString.split('&');
					//var length:uint = params.length;

					for(var i:int=0, index=-1; i < allParams.length; i++) 					{ 						var keyValuePair:String = allParams[i]; 						if((index = keyValuePair.indexOf("=")) > 0)
						{
							var paramKey:String = keyValuePair.substring(0,index);
							var paramValue:String = keyValuePair.substring(index+1);
							_params[paramKey] = paramValue;
						}
					}
				}
			}
			catch(e:Error)
			{
				trace("Some error occured. ExternalInterface doesn't work in Standalone player.");
			}
		}
	}
}

Here’s an example of how to use the updated version:

var myPath:QueryString = new QueryString("https://summus.io/?page=articles");
trace(myPath.parameters.page);

It’s as simple as passing a URL with a query string and then just use the parameters object to access the specific query argument, in this case we’re accessing the page argument, which will give us a value of “articles”.