private URLContents getURLContent(HttpServletRequest req, URL url, AuthToken authToken)
private URLContents getURLContent(HttpServletRequest req, URL url, AuthToken authToken, byte[] body)
	private URLContents getURLContent(HttpServletRequest req, URL url, AuthToken authToken) 			throws IOException {		// check the cache first		URLContents content = checkCachedURLContent(url);		if (content == null) {						// fetch from the internet			content = fetchURLContent(req, url);			try {				// cache the result for later use				if (canCacheProxyContent(req, url, content, authToken)) {					ZimbraLog.zimlet.info("adding new proxy cache content for " + url.toString());					mContentCache.put(url.hashCode(), content);				}			} catch (ServiceException se) {				ZimbraLog.zimlet.info("error trying to cache the proxy content");			}		}		return content;	}