java 得到短链接

java,框架springmvc框架,调用的类Unirest

private String getShortUrl(String oriUrl) throws UnirestException {
		//oriUrl是老的长连接
                //service是新浪短链接的请求地址service=http://api.t.sina.com.cn/short_url/shorten.json
		DataSet service = dataSetService.getDataSetByTypeAndCode(ReceptionConst.URL_STRING, ReceptionConst.URL_CODE_05);
		//对应得key也是新浪短链接的key一种规范key=3271760578
		DataSet source = dataSetService.getDataSetByTypeAndCode(ReceptionConst.APP_KEY, ReceptionConst.APP_KEY_CODE_01);//
		
		String url = service.getDescEn();
		String body = Unirest.get(url).queryString("source", source.getDescEn())
				.queryString("url_long", oriUrl)
				.header("Content-Type", "application/json;charset=UTF-8").asString().getBody();
		
		log.info("sina response: " + body);
		Gson g = new Gson();
		Object[] map = g.fromJson(body, Object[].class);
		Map<String, String> rs = (Map<String, String>) map[0];
		return rs.get("url_short");
	}

下面是新浪短链接的地址和规范

https://www.douban.com/note/249723561/


### Java 实现短链接转长链接 在Java中实现短链接转换成长链接主要依赖于HTTP请求来解析最终的目标URL。通过发送HTTP头中的`Location`字段可以获取重定向后的实际地址。 对于具体的实现方式,可以通过创建一个HTTP客户端发起GET请求到短链接,并跟踪所有的重定向直到获得最后的有效资源位置。下面给出一段简单的代码示例用于展示这一过程: ```java import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; public class ShortToLongUrlConverter { public static String convertShortUrlToLong(String shortUrl) throws IOException { URL url = new URL(shortUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置允许跟随重定向 connection.setInstanceFollowRedirects(false); connection.connect(); int responseCode = connection.getResponseCode(); if(responseCode >= 300 && responseCode < 400){ // 获取重定向后的URL String location = connection.getHeaderField("Location"); return location != null ? location : "No redirect found"; }else{ return "Not a redirection or error occurred."; } } } ``` 这段程序定义了一个名为 `convertShortUrlToLong` 的函数,它接受一个字符串参数作为输入的短链接地址[^2]。该方法内部使用了标准库中的`HttpURLConnection`类来进行网络通信操作。当接收到的状态码位于3xx范围内时表示发生了重定向,则可以从响应头部读取`Location`字段从而得知目标的真实路径。 需要注意的是,在某些情况下服务端可能会设置多次连续跳转,此时可能需要循环处理直至不再发生新的重定向为止;另外还需考虑异常情况下的错误处理逻辑以提高健壮性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值