请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

生成短链接失败

老师,我用百度生成短链接报空指针错误,用那个同学找的搜狗的报403错误,有什么好用的生成短链接的方法不

正在回答 回答被采纳积分+3

1回答

翔仔 2019-10-26 00:37:42

同学好,百度短链接目前把v1版本下线了,这是非常不好的实践,目前升级成了v2,而且每天生成的短链接控制在了100以内免费

花了一些时间研究了一下,得出下面的代码,测试是ok的,同学可以试试

//需要在pom.xml引入以下依赖
/**
 <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
**/
public class ShortNetAddressUtil {
	   final static String CREATE_API = "https://dwz.cn/admin/v2/create";
	    // 设置Token,在https://dwz.cn/console/userinfo 获取自己的token,复制粘贴到这里
	    final static String TOKEN = "fd26165fc99cb2208e06a7f1d0dcd4bf"; 

	    class UrlResponse {
	        @SerializedName("Code")
	        private int code;

	        @SerializedName("ErrMsg")
	        private String errMsg;

	        @SerializedName("LongUrl")
	        private String longUrl;

	        @SerializedName("ShortUrl")
	        private String shortUrl;

	        public int getCode() {
	            return code;
	        }

	        public void setCode(int code) {
	            this.code = code;
	        }

	        public String getErrMsg() {
	            return errMsg;
	        }

	        public void setErrMsg(String errMsg) {
	            this.errMsg = errMsg;
	        }

	        public String getLongUrl() {
	            return longUrl;
	        }

	        public void setLongUrl(String longUrl) {
	            this.longUrl = longUrl;
	        }

	        public String getShortUrl() {
	            return shortUrl;
	        }

	        public void setShortUrl(String shortUrl) {
	            this.shortUrl = shortUrl;
	        }
	    }

	    /**
	     * 创建短网址
	     *
	     * @param longUrl
	     *            长网址:即原网址
	     * @return  成功:短网址
	     *          失败:返回空字符串
	     */
	    public static String getShortURL(String longUrl) {
	        String params = "{\"Url\":\""+ longUrl + "\"}";

	        BufferedReader reader = null;
	        try {
	            // 创建连接
	            URL url = new URL(CREATE_API);
	            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	            connection.setDoOutput(true);
	            connection.setDoInput(true);
	            connection.setUseCaches(false);
	            connection.setInstanceFollowRedirects(true);
	            connection.setRequestMethod("POST"); // 设置请求方式
	            connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
	            connection.setRequestProperty("Token", TOKEN); // 设置发送数据的格式");

	            // 发起请求
	            connection.connect();
	            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码
	            out.append(params);
	            out.flush();
	            out.close();

	            // 读取响应
	            reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
	            String line;
	            String res = "";
	            while ((line = reader.readLine()) != null) {
	                res += line;
	            }
	            reader.close();

	            // 抽取生成短网址
	            UrlResponse urlResponse = new Gson().fromJson(res, UrlResponse.class);
	            if (urlResponse.getCode() == 0) {
	                return urlResponse.getShortUrl();
	            } else {
	                System.out.println(urlResponse.getErrMsg());
	            }

	            return ""; // TODO:自定义错误信息
	        } catch (IOException e) {
	            // TODO
	            e.printStackTrace();
	        }
	        return ""; // TODO:自定义错误信息
	    }

	    public static void main(String[] args) {
	        String res = getShortURL("http://myo2o.yitiaojieinfo.com/myo2o/frontend/index");
	        System.out.println(res);
	    }
}

在使用代码前,跟注释里说的一样,

1,需要往pom.xml引入新的一个jar依赖

		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.6</version>
		</dependency>

2.需要去到https://dwz.cn/console/userinfo 获取你的token。

3.直接复制粘贴使用我修改好的代码

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信