public static void getServerFromBalancerAsync(String balancerUrl,String applicationKey, final OnRestWebserviceResponse onCompleted) throws MalformedURLException {
		Matcher protocolMatcher = urlProtocolPattern.matcher(balancerUrl);

		String protocol = protocolMatcher.matches() ? "" : protocolMatcher.group(1);

		String parsedUrl = String.format("%s%s", protocol, balancerUrl);
		
		if(!Strings.isNullOrEmpty(applicationKey)){
            // CAUSE: Prefer String.format to +
            parsedUrl += String.format("?appkey=%s", applicationKey);
		}
		
		URL url = new URL(parsedUrl);

		RestWebservice.getAsync(url, new OnRestWebserviceResponse() {			
			@Override
			public void run(Exception error, String response) {
				if(error != null){
					onCompleted.run(error, null);
				}else{
					String clusterServer = null;

					Matcher matcher = balancerServerPattern.matcher(response);

					if (matcher.matches()) {
						clusterServer = matcher.group(1);
					}
					
					if(Strings.isNullOrEmpty(clusterServer)){
						onCompleted.run(new InvalidBalancerServerException(response), null);
					}else{
						onCompleted.run(null, clusterServer);
					}					
				}
			}
		});
	}
public static void getServerFromBalancerAsync ( String balancerUrl , String applicationKey , final OnRestWebserviceResponse onCompleted ) throws MalformedURLException { Matcher protocolMatcher = urlProtocolPattern . matcher ( balancerUrl ) ; String protocol = protocolMatcher . matches ( ) ? "" : protocolMatcher . group ( 1 ) ; String parsedUrl = String . format ( "%s%s" , protocol , balancerUrl ) ; if ( ! Strings . isNullOrEmpty ( applicationKey ) ) { parsedUrl += String . format ( "?appkey=%s" , applicationKey ) ; } URL url = new URL ( parsedUrl ) ; RestWebservice . getAsync ( url , new OnRestWebserviceResponse ( ) { @ Override public void run ( Exception error , String response ) { if ( error != null ) { onCompleted . run ( error , null ) ; } else { String clusterServer = null ; Matcher matcher = balancerServerPattern . matcher ( response ) ; if ( matcher . matches ( ) ) { clusterServer = matcher . group ( 1 ) ; } if ( Strings . isNullOrEmpty ( clusterServer ) ) { onCompleted . run ( new InvalidBalancerServerException ( response ) , null ) ; } else { onCompleted . run ( null , clusterServer ) ; } } } } ) ; }
Retrieves an Ortc Server url from the Ortc Balancer

@param balancerUrl
The Ortc Balancer url
@throws java.net.MalformedURLException