private Response requestHelper(String requestUrl, String requestBody)
	{
		Response response = backdoorRequest(requestUrl);
		if(response != null && response.getValue() != null)
		{
			try
			{
				response.value = JsonParser.parse((String)response.getValue());
				return response;
			}
			catch(JsonParseException e)
			{
				e.printStackTrace();
				response.value = null;
				response.code = -1;
				return null;
			}
		}
		
		//Check if it's in the cache
		if(cacheEnabled)
		{
			response = cache.get(requestUrl);
			//Ignore if not in cache or too old
			if(response != null && System.currentTimeMillis()-response.getTimeReceived() < CACHE_AGE_LIMIT)
				return response;
		}
		
		//Otherwise send the request
		response = sendLimitedRequest(requestUrl, requestBody);
		if(response.getValue() != null)
		{
			//Parse the request
			try
			{
				response.value = JsonParser.parse((String)response.getValue());
				cache.add(requestUrl, response);
			}
			catch(JsonParseException e)
			{
				//This shouldn't happen if we assume they're always sending correctly-formatted JSON
				e.printStackTrace();
				response.value = null;
				response.code = -1;
			}
		}
		
		return response;
	}