使用新浪短链接有多个参数一定要注意将&符号写成%26,不然你传递的参数&符号开始的部分会丢失。如www.baidu.com?a=1&b=2 生成短链接后,打开的url只会是www.baidu.com?a=1,如果你要传递上面2个参数那么就要这样写www.baidu.com?a=1%26b=2
/** * 新浪短链接生成工具 * @author fanx * @date 2018/11/07 * */ public class URLShortLinkTool { private static String access_token = "你的access_token"; /**短网址生成URL*/ public static final String SHORT_URL_GENERATION = "http://api.t.sina.com.cn/short_url/shorten.json?source=%s&url_long=%s"; /** * 短链接生成 * @param url 长链接 * @return 短链接 */ public static String generate(String url){ String request_url = String.format(SHORT_URL_GENERATION, URLShortLinkTool.access_token, url); List<URLShortLinkTool.UrlVO> urlVOs = GsonUtil.getGson().fromJson(HttpRequest.sendGet(request_url) , new TypeToken<ArrayList<URLShortLinkTool.UrlVO>>(){}.getType()); return urlVOs.get(0).getUrl_short(); } public static void main(String[] args) { // 如果你要传递多个参数需要将&转义%26,不然后面&符号的参数会丢失 System.out.println(URLShortLinkTool.generate("http://你的页面url?trainno=111" + "%26type=PQ")); } /** * 返回值接收类 * @author fanx * @date 2018/11/07 */ static class UrlVO { private String url_long; // 原始长链接 private String url_short; // 短链接 private String type; // 链接的类型,0:普通网页、1:视频、2:音乐、3:活动、5、投票 private String result; public String getUrl_long() { return url_long; } public void setUrl_long(String url_long) { this.url_long = url_long; } public String getUrl_short() { return url_short; } public void setUrl_short(String url_short) { this.url_short = url_short; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } } }
/** * 序列化工具 * @author fanx * */ public class GsonUtil { /** * 获得gson对象 * @return */ public static Gson getGson(){ Gson gson = new Gson(); return gson; } /** * 打印对象属性(这里我主要用于文本日志) * @param object * @return */ public static String getJsonData(Object object){ Gson gson = new Gson(); return gson.toJson(object).replace("\\",""); } }