比如可以将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 dataOutputStreamWriter streamToAuthorize = new java.io.OutputStreamWriter(aConnection.getOutputStream());streamToAuthorize.write(data);streamToAuthorize.flush();streamToAuthorize.close();// check errorint 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 ResponseInputStream 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

分享sina的短链生成java代码相关推荐

  1. CXF wsdl2java 生成java代码供客户端使用

    CXF wsdl2java 生成java代码供客户端使用 环境配置: 1.下载apache-cxf-2.6.2在环境变量中配置CXF_HOME 值为E:\gavin\cxf\apache-cxf-3. ...

  2. 【Android APT】注解处理器 ( 根据注解生成 Java 代码 )

    文章目录 一.生成 Java 代码 二.实现 IButterKnife 接口 三.视图绑定主要操作 四.完整注解处理器代码 五.博客资源 Android APT 学习进阶路径 : 推荐按照顺序阅读 , ...

  3. Protobuf生成Java代码(命令行)

    1.说明 本文介绍Protobuf生成Java代码的方法, 下载必须的Protobuf工具, 然后通过命令行, 把.proto文件生成Java代码. 2.准备Protobuf工具 2.1.获取prot ...

  4. Protobuf生成Java代码(Maven)

    1.说明 本文介绍Protobuf生成Java代码的方法, 配置对应的Maven插件, 把.proto文件生成Java代码. 2.插件配置 创建Maven工程grpc-compile, 修改pom.x ...

  5. 通过物理模型生成Java代码

    通过物理模型生成Java代码 软件开发过程中,我们一般是先针对数据库建模,物理建模完成后,生成数据库表,编码阶段的时候我们会针对数据库表生成大量的Javaeban或者是实体类 Powertdesign ...

  6. java插件开发_编写一个IDEA插件之:自动生成Java代码

    我很喜欢IDEA的一键自动生成代码功能,例如自动生成构造方法.字段的Get/Set方法.ToString方法等等,除此之外,也有一些插件提供自动生成代码的功能,例如我们所熟悉的GsonFormat插件 ...

  7. mybatis-plus生成java代码

    文章目录 前言 一.mybatis-plus生成java代码是什么 二.使用步骤 1.创建maven项目 2.导入项目依赖 3.创建代码生成器CodeGenerator.java 4.代码生成器Cod ...

  8. javapoet动态生成java代码

    刚接触第一感觉 动态生成java代码???java代码不就是一个后缀名为.java的txt文档吗?仔细想了下,如果要生成这样的代码的确挺麻烦,你要考虑导包的问题,以及复杂的语法 javapoet代码仓 ...

  9. 如何使用模板Thymeleaf来自动生成java代码

    文章目录 前言 如何使用模板Thymeleaf来自动生成java代码 01 Thymeleaf 是什么? 02 Thymeleaf与springBoot的集成即使用 03 如何使用模板Thymelea ...

最新文章

  1. 外界对程序员的误解究竟有多深?
  2. c#使用正则表达式获取TR中的多个TD_一个 Vue 模板可以有多个根节点(Fragments)?
  3. 电脑只有一个c盘怎么办_电脑的C盘快满了怎么办
  4. VC++网络资源集合
  5. selinux-添加
  6. LINQ TO SQL中还是用传统的连接串方式建立DbContext更好些
  7. 一年赚上亿的生意_如何一年不到的时间2万赚10个亿?
  8. 《机器学习实战》笔记(04):基于概率论的分类方法 - 朴素贝叶斯分类
  9. MySQL(22)--- NULL 值处理
  10. Linux平台 Oracle 11gR2 RAC安装Part1:准备工作
  11. .NET 基础 一步步 一幕幕 [前言]
  12. 云码之家4年来的微信引流营销推广之路
  13. 计算机组成原理——指令分析
  14. Oracle中Minus的使用
  15. BUUCTF:[GKCTF2020]Harley Quinn
  16. 《信息检索》第10周周二课程分享 及 11周周二分享安排
  17. 双Nmos管驱动电路
  18. 【面试题】1383- 面试官问:Vue3 对比 Vue2 有哪些变化?
  19. python做房源饼状图_python使用matplotlib画饼状图
  20. Ubuntu18.04 安装 ROS Melodic(同时解决 rosdep update 问题,亲测有效)

热门文章

  1. 动漫人物脸型怎么画?如何画好动漫人物脸型?
  2. MySQL学习笔记——20170811
  3. 儒略日转公历 以及 公历转儒略日(python版)
  4. CVPR 2021 华南理工和微信的Transformer:UP-DETR无监督预训练检测器
  5. C# 自制微信登录窗口,100%还原,数据库(SQL Server)
  6. GM7150,振芯科技,视频解码器,CVBS转BT656/601,QFN32,替换TVP5150/CJC5150
  7. android kl文件编辑,Android手机固件的简单修改教程
  8. 海岱物联星空社团成员在第六届电子竞技全国高校联赛山东省总决赛中获佳绩
  9. win10格局法判断八字
  10. IP地址,IPV4与IPV6