地址: http://en.gravatar.com/
Gravatar会把邮箱和对应邮箱用户上传的图片进行关联.
如果你的应用使用了gravatar,访问你应用的用户有在gravatar上注册且上传了头像,你的应用就可以通过用户留下的邮箱地址来显示图片,你可以把它当成用户的头像.
使用Gravatar的话就可以除去要向客户传输图片的压力,当然这也需要用户有在Gravatar注册过账号..
/** * 类名: Gravatar.java
* 类描述: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 ListgetImages(List emailList, Integer size) { List list = new ArrayList (); 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缩短
地址: http://p.tl/api.php
缩短URL,将用户的URL关联到她域名下的一个地址.
/** * 类名: PixivURL.java
* 类描述: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 ListgetInstance(List urls) { List list = new ArrayList (); 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("[email protected]", 200); Desktop.getDesktop().browse(new URL(url).toURI()); } }