Java tutorial
//package com.java2s; /* * Copyright (c) 2009-2011 Dropbox, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class Main { /** * Creates a URL for a request to the Dropbox API. * * @param host the Dropbox host (i.e., api server, content server, or web * server). * @param apiVersion the API version to use. You should almost always use * {@code DropboxAPI.VERSION} for this. * @param target the target path, staring with a '/'. * @param params any URL params in an array, with the even numbered * elements the parameter names and odd numbered elements the * values, e.g. <code>new String[] {"path", "/Public", "locale", * "en"}</code>. * * @return a full URL for making a request. */ public static String buildURL(String host, int apiVersion, String target, String[] params) { if (!target.startsWith("/")) { target = "/" + target; } try { // We have to encode the whole line, then remove + and / encoding // to get a good OAuth URL. target = URLEncoder.encode("/" + apiVersion + target, "UTF-8"); target = target.replace("%2F", "/"); if (params != null && params.length > 0) { target += "?" + urlencode(params); } // These substitutions must be made to keep OAuth happy. target = target.replace("+", "%20").replace("*", "%2A"); } catch (UnsupportedEncodingException uce) { return null; } return "https://" + host + ":443" + target; } /** * URL encodes an array of parameters into a query string. */ private static String urlencode(String[] params) { if (params.length % 2 != 0) { throw new IllegalArgumentException("Params must have an even number of elements."); } String result = ""; try { boolean firstTime = true; for (int i = 0; i < params.length; i += 2) { if (params[i + 1] != null) { if (firstTime) { firstTime = false; } else { result += "&"; } result += URLEncoder.encode(params[i], "UTF-8") + "=" + URLEncoder.encode(params[i + 1], "UTF-8"); } } result.replace("*", "%2A"); } catch (UnsupportedEncodingException e) { return null; } return result; } }