有趣的两个第三方应用,邮箱关联头像和URL缩短

[1]. 用户头像显示
地址: [url=http://en.gravatar.com/]http://en.gravatar.com/[/url]
Gravatar会把邮箱和对应邮箱用户上传的图片进行关联.
如果你的应用使用了gravatar,访问你应用的用户有在gravatar上注册且上传了头像,你的应用就可以通过用户留下的邮箱地址来显示图片,你可以把它当成用户的头像.
使用Gravatar的话就可以除去要向客户传输图片的压力,当然这也需要用户有在Gravatar注册过账号..


/**
* 类名: Gravatar.java<br />
* 类描述:Gravatar邮箱关联图片,头像显示
*
* @version: 1.0
* @date: 2013-4-4 下午7:35:27
* **/
public class Gravatar {
private final static String BASE = "http://www.gravatar.com/avatar/";

/**
* 方法描述:通过邮箱获取图片地址
* @param email 邮箱地址
* @param size 图片大小
* @return: 图片地址
* @version: 1.0
* @date: 2013-4-4 下午7:45:03
* **/
public static String getImage(String email, Integer size) {
return BASE + md5Hex(email) + "?s=" + size + "&d=mm";
}

/**
* 方法描述:通过邮箱批量获取图片地址
* @param emailList 多个邮箱地址
* @return: 图片地址集合
* @param size 图片大小
* @version: 1.0
* @date: 2013-4-4 下午7:42:39
* **/
public static List<String> getImages(List<String> emailList, Integer size) {
List<String> list = new ArrayList<String>();
for (String email : emailList) {
list.add(BASE + md5Hex(email) + "?s=" + size + "&d=mm");
}
return list;
}



//------------ 以下为私有方法

private static String hex(byte[] array) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < array.length; ++i) {
sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(
1, 3));
}
return sb.toString();
}
private static String md5Hex(String message) {
String result = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
result = hex(md.digest(message.getBytes("CP1252")));
} catch (NoSuchAlgorithmException e) {
} catch (UnsupportedEncodingException e) {
}
return result;
}
}


[2]. URL缩短
地址: [url=http://p.tl/api.php]http://p.tl/api.php[/url]
缩短URL,将用户的URL关联到她域名下的一个地址.


/**
* 类名: PixivURL.java<br />
* 类描述:URL缩短
* @version: 1.0
* @date: 2013-4-5 下午10:27:46
* **/
public class PixivURL extends P implements PStatus {
/** API_KEY: API_KEY **/
private static final String API_KEY = "1f726de5d07a80556e7f54baeffab04b30f348c0";


/**
* 方法描述:url缩短
* @param url 原始地址
* @return: 缩短后的url
* @version: 1.0
* @date: 2013-4-5 下午10:29:15
* **/
public static PixivURL getInstance(String url) {
String requestUrl = "http://p.tl/api/api_simple.php?key=" + API_KEY + "&url=" + url;
URL u;
BufferedReader br;
PixivURL p = null;
String link;
try {
u = new URL(requestUrl);
URLConnection conn = u.openConnection();
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
br = new BufferedReader(isr);
while(null != (link = br.readLine())){
Gson gson = new Gson();
p = gson.fromJson(link, PixivURL.class);
}
} catch (Exception e) {
e.printStackTrace();
}
return p;
}


/**
* 方法描述:批量处理
* @param urls URL集合
* @return: 修改后的URL
* @version: 1.0
* @date: 2013-4-5 下午11:44:35
* **/
public static List<PixivURL> getInstance(List<String> urls) {
List<PixivURL> list = new ArrayList<PixivURL>();
for (String url : urls) {
list.add(PixivURL.getInstance(url));
}
return list;
}
}

class P {
/** status: 操作状态(成功返回PixivURL.REQUEST_SUCCESS) **/
private String status;
/** long_url: 原始的URL **/
private String long_url;
/** short_url: 缩短的URL **/
private String short_url;
/** counter: 使用了几次(1天能调用1000次) **/
private String counter;

/** @return status : 操作状态 **/
public String getStatus() {
return status;
}
/** @return long_url : 原始的URL **/
public String getLongUrl() {
return long_url;
}
/** @return short_url : 缩短的URL **/
public String getShortUrl() {
return short_url;
}
/** @return counter : 使用了几次(1天能调用1000次) **/
public String getCounter() {
return counter;
}
}

interface PStatus {
// empty API key APIキーが入力されていません。
// invalid API key 不正なAPIキーです。
/** OK: URL成功缩短/URLの短縮が成功しました **/
static String OK = "ok";
/** EMPTY_LONG_URL: 未输入需要缩短的URL/短縮元のURLが入力されていません **/
String EMPTY_LONG_URL = "empty long url";
/** API_LIMIT: 调用次数超过上限(1天能调用1000次)/APIの利用回数が上限を越えています **/
String API_LIMIT = "API limit";
/** INVALID_LONG_URL: URL无法缩短 /短縮できないURLです**/
String INVALID_LONG_URL = "invalid long url";
}



附件就是上面描述的两个应用,[2]会用到gson
下面是演示调用:


public class Test {

public static void main(String[] args) throws Exception{
pixivURL();
gravatar();
}

private static void pixivURL() throws Exception {
PixivURL p = PixivURL.getInstance("http://lshtzml-163-com.iteye.com/admin/blogs/1842602");

if (PixivURL.OK.equals(p.getStatus())) {
Desktop.getDesktop().browse(new URL(p.getShortUrl()).toURI());
} else if (PixivURL.API_LIMIT.equals(p.getStatus())) {
System.out.println("调用次数超过上限");
} else if (PixivURL.EMPTY_LONG_URL.equals(p.getStatus())) {
System.out.println("未输入需要缩短的URL");
} else if (PixivURL.INVALID_LONG_URL.equals(p.getStatus())) {
System.out.println("URL无法缩短");
}
}

private static void gravatar() throws Exception {
String url = Gravatar.getImage("mikoarisu@gmail.com", 200);
Desktop.getDesktop().browse(new URL(url).toURI());
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值