public static String appendQueryToUrl(String url, Map<String, Iterable<String>> params) { return appendQueryToUrl(url, buildQueryStringForUrl(params)); }
public static String decodeFromURL(String value) { return decodeFromURL(value, null); }
private String makeURLSave(String name, EncodingOptions encodingOptions) { return URLUtils.encodeForURL(name, encodingOptions); }
public static String replaceQueryInUrl(String url, Map<String, Iterable<String>> params) { String query = buildQueryStringForUrl(params); url = removeQueryStringFromUrl(url); return url + "?" + query; }
public static String buildSubUrl(String url, String... subpaths) { URLPath urlPath = URLPath.fromString(subpaths); if (urlPath.isEmpty()) { return url; } String query = URLUtils.getQueryStringFromUrl(url); url = URLUtils.removeQueryStringFromUrl(url); if (!(url == null || url.isEmpty()) && !(url.endsWith("/"))) { url += "/"; } url += urlPath.asString(); url = URLUtils.appendQueryToUrl(url, query); return url; }
public static Map<String, Iterable<String>> parseQueryStringFromUrl(String url, String charset) { Map<String, Iterable<String>> params = new HashMap<String, Iterable<String>>(); String query = getQueryStringFromUrl(url); if (query.isEmpty()) { return params; } String[] kvps = query.split("&+"); for (String kvp : kvps) { String key; String val; int indexOfEqual = kvp.indexOf('='); if (indexOfEqual < 0) { key = kvp; val = ""; } else { key = kvp.substring(0, indexOfEqual); val = kvp.substring(indexOfEqual + 1); } key = decodeFromURL(key, charset); val = decodeFromURL(val, charset); List<String> parameterValues = (List<String>) (params.containsKey(key) ? params.get(key) : new ArrayList<String>()); parameterValues.add(val); params.put(key, parameterValues); } return params; }
public static String buildQueryStringForUrl(Map<String, Iterable<String>> params) { return buildQueryStringForUrl(params, (String) null); }
private String appendReturnUrlParameter(String redirectLocation, String currentRequestLocation) { String parameterName = getReturnUrlParameterName(); if (!isAppendReturnUrlParameter() || parameterName.isEmpty()) { return redirectLocation; } return URLUtils.appendQueryToUrl( redirectLocation, Collections.<String, Iterable<String>>singletonMap(parameterName, Collections.singleton(currentRequestLocation))); }
public static String encodeForURL(String value, EncodingOptions encodingOptions) { if (!encodingOptions.isSpaceAsPercent()){ return encodeForURLSpaceAsPlus(value, encodingOptions.getCharset()); } return encodeForURLSpaceAsPercent(value, encodingOptions.getCharset()); }
public static String removeDefaultPort(final String inurl) { try { return removeDefaultPort(new URL(inurl)).toExternalForm(); } catch (MalformedURLException e) { throw new IllegalArgumentException("Illegal URL <" + inurl + ">", e); } } }
public static Map<String, Iterable<String>> parseQueryStringFromUrl(String url) { return parseQueryStringFromUrl(url, null); }
private String appendSubpath(String... subpath) { return URLUtils.buildSubUrl(m_endpoint, subpath); }
@Override public void write(String charset, Map<String, Iterable<String>> headers, OutputStream outstream) throws IOException { EncodingOptions encodingOptionsWithCharset = encodingOptions.charset(charset); String queryString = URLUtils.buildQueryStringForUrl(m_params, encodingOptionsWithCharset); outstream.write(queryString.getBytes(charset)); }
String create(String currentRequestLocation) { String parameterName = getReturnUrlParameterName(); if (!isAppendReturnUrlParameter() || parameterName.isEmpty()) { return getCompiledRedirect(currentRequestLocation); } return URLUtils.appendQueryToUrl(getCompiledRedirect(currentRequestLocation), Collections.<String, Iterable<String>>singletonMap(parameterName, Collections.singleton(currentRequestLocation))); }
public static String getContextLocation(HttpServletRequest request) { try { HttpServletRequest httpRequest = request; return URLUtils.removeDefaultPort(new URL(httpRequest.getScheme(), httpRequest.getServerName(), httpRequest.getServerPort(), httpRequest.getContextPath()).toExternalForm()); } catch (MalformedURLException e) { throw new IllegalStateException("can't create valid context url:" + e, e); } }
/** * Sends a HTML form redirect. Builds an HTML fragment as content containing a form * which sends itself after loading. Usefull for URLs * with a long parameter list. All URL parameters are encoded as POST body * parameters. */ public static void sendFormPostRedirect(String redirectUrl, HttpServletResponse response) { sendFormPostRedirect(redirectUrl, response, URLUtils.parseQueryStringFromUrl(redirectUrl)); }
public static String encodeForURL(String value) { return encodeForURL(value, EncodingOptions.defaultOptions()); }
public static String buildQueryStringForUrl(Map<String, Iterable<String>> params, String charset) { return buildQueryStringForUrl(params, EncodingOptions.defaultOptions().charset(charset)); }
return URLUtils.decodeFromURL(str);
private static void appendRequestParameter(StringBuilder currentRequestLocation, HttpServletRequest httpRequest) { Enumeration params = httpRequest.getParameterNames(); if (!params.hasMoreElements()) { return; } currentRequestLocation.append("?"); while (params.hasMoreElements()) { String name = (String) params.nextElement(); String val = httpRequest.getParameter(name); currentRequestLocation.append(URLUtils.encodeForURL(name)); if (val != null) { currentRequestLocation.append("=").append(URLUtils.encodeForURL(val)); } currentRequestLocation.append("&"); } int lastIndex = currentRequestLocation.length() - 1; if (currentRequestLocation.charAt(lastIndex) == '&') { currentRequestLocation.deleteCharAt(lastIndex); } }