使用cookie获取QQ头像(JSP版)
由于腾讯现在QQ头像必须要登录才能看到原头像,所以以前直接获取头像已经失效了(如这篇文章获取QQ头像地址),既然直接获取不行,那来个曲线救国吧~
PS:写完代码后才发现腾讯的头像隐私保护得挺好的,只有自己的好友或群友能获取全头像,非好友只能获取QQ内置头像。悲剧啊。。。
直接贴代码,以下代码是通过带cookie访问头像的链接,其实其他PHP等也可以实现的:
<%@ page language="java" contentType="image/bmp" pageEncoding="UTF-8"%><%@ page import="java.net.*,java.util.*,java.io.*"%><% String qqnum = request.getParameter("qq"); URL url = new URL("http://face6.qun.qq.com/cgi/svr/face/getface?type=1&uin="+qqnum); HttpURLConnection http = (HttpURLConnection) url.openConnection(); //设置Header http.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT)"); http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //设置Cookie,登陆WebQQ或者QQ空间可以查看cookie得到下面的值,请替换过来 //还不知道skey这个值会不会定期变化,QQ号码不够10位前面补0 http.setRequestProperty("Cookie", "uin=oQQ号码; skey=@安全码;"); http.setRequestMethod("GET"); http.setDoInput(true); InputStream is = http.getInputStream(); //得到输出流,注意out是Writer类的对象,这里要用字节流 OutputStream os = response.getOutputStream(); //输出头像 while (is.available() > 0) { os.write(is.read()); } //在后台打印Header信息,不是必须 System.out.println(http.getResponseCode()); Map<String, List<String>> header = new HashMap<String, List<String>>(); header = http.getHeaderFields(); for (String str : header.keySet()) { System.out.println(str + "" + header.get(str)); } %>
可是只能获取自己好友的自定义头像,其他非好友只能获取QQ内置头像(一般不是那只企鹅),所以就懒得上传到服务器了,JSP可以上传到Google app engine^_^
我就是要让你回复,哇哈哈。。
回复啥?~
话说你的博客能发表回复的么,没反应的?
赞,好思路! /yy /yy
@小邪, 最喜欢这种淫荡的思路了嘎嘎嘎嘎 ~
@小邪, /yy 淫荡是我的本质~~
用PHP获取还不错