bit.ly相比起twitter和google的短连接服务,使用起来更为简单(谷歌的弄了一晚上也没弄出来)而且使用的是get方法,测试和上手都比较容易,下面是使用android 原生类写的通过长url获取短连接的方法,拷贝过去就可以直接用了,而且附赠我自己申请的key,免除诸位申请key的麻烦。

但是把长连接换成短连接有什么用我还没看出来,至少在twitter上发东西twitter会自动帮你转的,完全不用手动转。

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo; public static final String DEF_CHATSET = "UTF-8";//默认字符编码public static final int DEF_CONN_TIMEOUT = 30000;//默认超时连接时间public static final int DEF_READ_TIMEOUT = 30000;//默认下载连接时间public static final String GET = "GET";public static final String POST = "POST";public static final String BITLY_CODE = "3ae922985a170d3a7cc3e6e7e55b980b413e34e6";//bit.ly的KEY//客户端浏览器类型public static String userAgent =  "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";public static String get(String strUrl,Map<String, Object> params,String flag){return net(strUrl, params, GET, flag);}public static String post(String strUrl,Map<String, Object> params,String flag){return net(strUrl, params, POST, flag);}@SuppressLint("NewApi")//警告:如果url连接失败返回为null!!!private static String net(String strUrl, Map<String, Object> params,String method,String flag) {HttpURLConnection conn = null;BufferedReader reader = null;String rs = null;try {StringBuffer sb = new StringBuffer();if(method==null || method.equals("GET")){if(params!=null&¶ms.size()>0)//如果有参数strUrl = strUrl+"?"+urlencode(params);//捎带手把字符给照url编码}URL url = new URL(strUrl);conn = (HttpURLConnection) url.openConnection();if(method==null || method.equals("GET")){conn.setRequestMethod("GET");}else{conn.setRequestMethod("POST");conn.setDoOutput(true);}conn.setRequestProperty("User-agent", userAgent);conn.setUseCaches(false);conn.setConnectTimeout(DEF_CONN_TIMEOUT);//连接超时时间conn.setReadTimeout(DEF_READ_TIMEOUT);//下载超时时间conn.setInstanceFollowRedirects(false);conn.connect();if (method.equals("POST")) {if(params!= null &¶ms.size()>0)try (DataOutputStream out = new DataOutputStream(conn.getOutputStream())) {out.writeBytes(urlencode(params));out.flush();out.close();}}InputStream is = conn.getInputStream();reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));//设置解析编码String strRead = null;while ((strRead = reader.readLine()) != null) {sb.append(strRead);}rs = sb.toString();} catch (IOException e) {JLogUtils.i("Alex", flag + "网络连接失败");e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();JLogUtils.i("Alex",flag + "连接关闭失败");}}if (conn != null) {conn.disconnect();}}return rs;//如果失败返回为null}//将map型转为请求参数型public static String urlencode(Map<String, ?> data) {StringBuilder sb = new StringBuilder();for (Map.Entry<String, ?> i : data.entrySet()) {try {sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"",DEF_CHATSET)).append("&");//按照默认参数对字符进行编码} catch (UnsupportedEncodingException e) {e.printStackTrace();}}return sb.toString();}public static String getShortUrl(String longUrl){
//        https://api-ssl.bitly.com/v3/user/link_save?access_token=3ae922985a170d3a7cc3e6e7e55b980b413e34e6&longUrl=www.baidu.comJLogUtils.i("Alex", "压缩前网址为" + longUrl);longUrl.replace("?", "/?");Map<String,Object> params = new HashMap<String,Object>();params.put("longUrl",longUrl);params.put("access_token",BITLY_CODE);String shortUrl = get("https://api-ssl.bitly.com/v3/user/link_save",params,"获取短连接");JLogUtils.i("Alex","获取的短连接为"+shortUrl);
//        {
//            "data": {
//            "link_save": {
//                "aggregate_link": "http://bit.ly/JGVkUl",
//                        "link": "http://bit.ly/JGVkUk",
//                        "long_url": "http://mergerecords.com/news",
//                        "new_link": 1
//            }
//        },
//            "status_code": 200,
//                "status_txt": "OK"
//        }try {JSONObject returnObject = new JSONObject(shortUrl);JSONObject data = returnObject.getJSONObject("data");JSONObject save = data.getJSONObject("link_save");shortUrl = save.getString("link");JLogUtils.i("Alex","最终获得的短连接为"+shortUrl);} catch (JSONException e) {JLogUtils.i("Alex","短url返回Json格式异常"+shortUrl);e.printStackTrace();}if(JDataUtils.isEmpty(shortUrl))return longUrl;return shortUrl;}

Android使用bit.ly的api获取url 短连接相关推荐

  1. Android开发:基于原生API获取位置信息、卫星信号个数及参与定位的卫星个数

    目录 概述 权限申请及开启GPS 调用原生API进行定位 获取设备收到的卫星信号个数 获取用于定位的卫星信号个数 成果图 概述 最近在做室内外无缝定位的相关demo,室外定位中,GNSS定位方法具有精 ...

  2. Android 通过腾讯WebService API获取 地址经纬度

    不废话,需求:必须调用腾讯地图的API将地址转经纬度,怎么办? 1.申请地图使用Key(必须) 访问腾讯地图服务 : http://lbs.qq.com/qqmap_wx_jssdk/index.ht ...

  3. 南邮Android Studio应用高德地图API获取SHA1码

    这两天在做安卓实验,其中涉及到了高德地图API的使用,我在使用过程中发现输出结果为MD5验证失败,寻路失败的问题(忘记截图了).然后我个人就去查阅高德地图API的官方文档,也没查出个所以然,最后依靠C ...

  4. Android开发之监听或获取手机短信内容

    最近开始学习安卓,要做一个可以监听手机短信的内容,做个笔记,方便以后查看 有两种方式: 方式一:通过广播监听短信信息 注册一个广播接收器 <receiver android:name=" ...

  5. Android中基于心知天气API获取天气信息

    Android中基于心知天气获取天气信息 JSON JSON简介 JSON对象 JSON数组 JSON解析 Android中获取天气 获取天气的流程 获取心知天气的API key 获取心知天气的API ...

  6. android调用在线天气服务,android通过google api获取天气信息示例

    android通过google API获取天气信息 复制代码 代码如下: public class WeatherActivity extends Activity { private TextVie ...

  7. android自动获取天气,android通过google api获取天气信息示例

    android通过google API获取天气信息 public class WeatherActivity extends Activity { private TextView txCity; p ...

  8. Android textview 获取url,获取电话号码

    textview添加autoLink属性即可 <TextView android:id="@+id/totwo" android:layout_width="wra ...

  9. 进阶1·调用高德API获取交通数据(多个URL访问,字典提取,while无限循环下的程序间断运行)

    调用高德开放API获取实时交通数据 想法及思路 现在大型网站都提供了好多开放API,根据这些开放API可以做一些比较有趣的东西,本次调用高德开放api实时获取你想知道的道路拥堵状况 工具及技术: Py ...

最新文章

  1. [javaSE] java获取文件列表
  2. 统计学习笔记(4)——朴素贝叶斯法
  3. 金士顿sd卡恢复软件_手机上使用SD内存卡会让手机性能变差?
  4. 怎样查看.a和so文件中的接口
  5. python学习(四)--POST请求
  6. php怎么关闭全部进程,怎么关闭swoole进程
  7. MIP 脚本域名地址变更公告
  8. ajax和fetch哪个好,axios和ajax,fetch的区别
  9. FusionCharts 的XML标签属性
  10. svn导出项目到myeclipse,运行报ClassNotFoundException
  11. CTR点击率预估实战分享
  12. UE4 蓝图 循环调用
  13. C++使用Socks5协议进行代理上网(三)
  14. 局域网内如何通过代理上网
  15. 工厂模式-汽车工厂案例(附代码)
  16. cdh6.3安装以及整合spark2、flink1.9
  17. 关于WM_COMMAND与WM_NOTIFY
  18. Flask项目1(美食地图)
  19. android 自定义方形章,Android自定义View-圆形印章
  20. MapReduce快速入门系列(4) | Hadoop序列化

热门文章

  1. 不使用Ultra Liberarion软件导出BXL文件的方法
  2. oracle税则的优先级,Oracle EBS r12财务模块
  3. 网站SEO报告和代码工具平台系统源码
  4. Revit API:Element 继承体系
  5. 采用冯诺依曼体系结构的计算机基本特点,冯诺依曼体系结构计算机.docx
  6. 树莓派+Klipper入门知识
  7. 线性回归模型评估:R-square(确定系数)、均方根、均方差
  8. 腾讯云服务器绑定域名
  9. 纯CSS实现DIV悬浮(固定位置)
  10. oracle ldom ipmp,在 Logical Domains 环境中配置 IPMP