`
yaerfeng1989
  • 浏览: 232988 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分享sina的短链生成java代码

    博客分类:
  • java
阅读更多

比如可以将http://zuidaima.com/转换为http://t.cn/zlsvWVq

如下图:

原创不易,转载请注明出处分享sina的短链生成java代码

package com.zuidaima.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ShortenUrl {

	private static final boolean DEBUG = true;

	public static void main(String[] args) {
		String url = "http://www.henshiyong.com/tools/sina-shorten-url.php";
		Map<String, String> params = new LinkedHashMap<String, String>();
		params.put("url", "http://www.google.com");
		params.put("submit", "转换");

		String data = null;

		try {
			data = postUrl(url, params);
			if (DEBUG) {
				System.out.println(data);
			}
		} catch (IOException ex) {
		}

		if (data != null) {
			String shortUrl = getShortenUrl(data);
			if (DEBUG) {
				System.out.println(shortUrl);
			}
		}
	}

	public static String getShortenUrl(String content) {
		String url = null;
		List<String> resultList = getContext(content);

		for (Iterator<String> iterator = resultList.iterator(); iterator
				.hasNext();) {
			url = iterator.next();
		}

		return url;
	}

	/**
	 * Extract "XXXX" from "<textarea>XXXX</textarea>"
	 * 
	 * @param html
	 * @return
	 */
	public static List<String> getContext(String html) {
		List<String> resultList = new ArrayList<String>();
		Pattern p = Pattern.compile("<textarea>(.*)</textarea>");
		Matcher m = p.matcher(html);
		while (m.find()) {
			resultList.add(m.group(1));
		}
		return resultList;
	}

	public static class HttpException extends RuntimeException {

		private int errorCode;
		private String errorData;

		public HttpException(int errorCode, String errorData) {
			super("HTTP Code " + errorCode + " : " + errorData);
			this.errorCode = errorCode;
			this.errorData = errorData;
		}

		public int getErrorCode() {
			return errorCode;
		}

		public String getErrorData() {
			return errorData;
		}

	}

	public static String postUrl(String url, Map<String, String> params)
			throws IOException {
		String data = "";
		for (String key : params.keySet()) {
			data += "&" + URLEncoder.encode(key, "UTF-8") + "="
					+ URLEncoder.encode(params.get(key), "UTF-8");
		}
		data = data.substring(1);
		// System.out.println(data);
		URL aURL = new java.net.URL(url);
		HttpURLConnection aConnection = (java.net.HttpURLConnection) aURL
				.openConnection();
		try {
			aConnection.setDoOutput(true);
			aConnection.setDoInput(true);
			aConnection.setRequestMethod("POST");
			// aConnection.setAllowUserInteraction(false);
			// POST the data
			OutputStreamWriter streamToAuthorize = new java.io.OutputStreamWriter(
					aConnection.getOutputStream());
			streamToAuthorize.write(data);
			streamToAuthorize.flush();
			streamToAuthorize.close();

			// check error
			int errorCode = aConnection.getResponseCode();
			if (errorCode >= 400) {
				InputStream errorStream = aConnection.getErrorStream();
				try {
					String errorData = streamToString(errorStream);
					throw new HttpException(errorCode, errorData);
				} finally {
					errorStream.close();
				}
			}

			// Get the Response
			InputStream resultStream = aConnection.getInputStream();
			try {
				String responseData = streamToString(resultStream);
				return responseData;
			} finally {
				resultStream.close();
			}
		} finally {
			aConnection.disconnect();
		}
	}

	private static String streamToString(InputStream resultStream)
			throws IOException {
		BufferedReader aReader = new java.io.BufferedReader(
				new java.io.InputStreamReader(resultStream));
		StringBuffer aResponse = new StringBuffer();
		String aLine = aReader.readLine();
		while (aLine != null) {
			aResponse.append(aLine + "\n");
			aLine = aReader.readLine();
		}
		return aResponse.toString();

	}
}

 完整分享代码下载地址:http://www.zuidaima.com/share/1550463367924736.htm



 

0
1
分享到:
评论

相关推荐

    Java实现短链转换项目

    在IT行业中,短链接服务是一种常见的功能,它能够将冗长的URL转化为简短的、易于分享和记忆的链接。本项目是基于Java技术栈,利用SpringBoot框架、Redis缓存系统、MySQL数据库以及布隆过滤器来实现短链转换。下面...

    短链批量生成器

    短链批量生成器的主要功能是将较长的URL(统一资源定位符)转化为较短的形式,便于分享、追踪和管理。短链不仅在视觉上更简洁,还能在字符限制的平台如Twitter上提高可读性。本工具特别强调“批量生成”和“爆破版本...

    短链接生成系统源码-网址生成系统-短链防红域名系统.zip

    短链接生成系统是一种常见的互联网工具,它通过将长网址转换为较短的、易于记忆的链接,方便用户分享和传播。这种系统的核心在于其背后的算法和技术实现,包括URL编码、哈希函数、数据库管理和分布式系统设计等。接...

    Laravel实战开发短链生成器.zip

    短链生成器是用于将长URL转化为简短、易于分享和记忆的链接,它在社交媒体、营销活动以及数据分析中广泛使用。这个项目基于 Laravel 框架进行实现,Laravel 是一个流行的PHP全功能框架,以其优雅的语法和强大的功能...

    短网址、综合短网址、PT短网址生成源代码,含前后端源代码,做一个自己的短链生成网站

    短网址、综合短网址、PT短网址生成源代码,含前后端源代码,做一个自己的短链生成网站 安装步骤 直接上传到你的空间即可,要求php环境 添加接口 index.html中,添加网址单选 api.php中,添加短链接口

    短链源代码;java;分布式

    短链源代码;java;分布式

    浅谈Java代码的 微信长链转短链接口使用 post 请求封装Json(实例)

    在探讨如何使用Java代码实现微信长链转短链接口的过程中,首先要了解的是长链和短链的概念及其用途。长链指的是完整的、较长的网址,它可能包含多个查询参数和较长的路径信息。而短链是将长链通过特定算法转换为更短...

    一个基于SpringBoot 开发的在线短链生成系统.zip

    一个基于SpringBoot 开发的在线短链生成系统源码 实现功能 1、将长链接转换成短链接,访问短链接时, 302重定向至原始长链接 2、支持设置短链有效期 3、支持记录访问次数 一个基于...

    百度API生成短链代码

    ### 百度API生成短链代码解析 #### 一、背景与目的 在互联网应用中,长链接往往显得不够简洁且占用空间较大,特别是在社交媒体、短信等限制字符数量的平台上,使用长链接会大大降低用户体验。因此,将长链接转换为...

    最新抖音快手防红短链在线生成系统源码+带免签支付【站长亲测】

    【标题】:“最新抖音快手防红短链在线生成系统源码+带免签支付”指的是一个专门为抖音和快手等短视频平台设计的防红短链接生成系统。防红短链是为了解决在这些社交平台上分享长链接可能导致的链接被屏蔽或无法点击...

    java短网址服务(TinyURL)生成算法

    Java 短网址服务(TinyURL)生成算法 本文主要介绍了 Java 短网址服务生成算法的实现细节,包括生成全局唯一的数字和实现进制的转换两个关键点。生成全局唯一的数字可以使用 Redis 的 incr 操作、MySQL 的 ...

    短链接生成系统源码-网址生成系统-短链防红域名系统

    前两年盛行的新浪短网址和一些小站长搭建的短网址根本都gg了, 想要一个既稳定又好用的短网址系统只要本人搭建了,今天给大家分享一个很好用的短网址系统, 本系统是国内程序员开发,后台简约,合适自用

    短链接生成与解析访问示例源代码

    - **学习点**:阅读`skb-jump`源代码可以帮助理解短链接生成和解析的实现细节,包括哈希算法的选择、编码策略、数据库操作及错误处理。 5. **安全与扩展**: - **安全性**:确保短链接系统不被滥用,例如设置访问...

    最新抖音快手防红短链在线生成系统源码+带免签支付.zip

    "最新抖音快手防红短链在线生成系统源码+带免签支付.zip" 这个标题揭示了资源的核心内容,它是一款专为抖音和快手平台设计的防红(防止链接被屏蔽)短链生成系统,并且集成了免签支付功能。这意味着用户可以通过该...

    基于Java与HTML开发的抖音短链分享系统设计源码

    本项目是一款基于Java和HTML开发的抖音短链分享系统设计源码,包含179个文件,涵盖160个Java源文件、11个XML配置文件、3个YAML配置文件、2个Git忽略文件、2个YAML文件、1个HTML文件。该系统旨在提升用户分享抖音视频...

    读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务.zip

    读书笔记:基于 openresty + redis + mysql 实现高性能短链生成服务

    基于Java和前端技术的bilibili短链分享系统设计源码

    本项目是一款基于Java和前端技术的Bilibili短链分享系统源码,总计包含278个文件,涵盖177个Java文件、19个Vue组件、11个JavaScript文件、22个PNG图片、13个YAML配置文件及其他多种格式文件。系统核心功能是将长链接...

    维多微信防封防红裂变短链系统源码 实时检测域名禁用微信已红域名

    可用于多种程序的防封策略 内置检测域名模块 实时检测域名,禁用微信已...支持生成微信短链,有添加公众号并且有权限生成微信短链则会优先使用微信短链,无则用新浪短链进行生成 感兴趣拿走自行研究,不提供技术服务。

Global site tag (gtag.js) - Google Analytics