没事写的获取校内好友头像


package on201104;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;


public class GetFlist {

static final String LOGON_SITE = "http://www.renren.com";

static final int LOGON_PORT = 80;

static final String DEPT_PATH = "d:\\temp\\abc";

public static Map<String,String> GetFriendMap(Cookie[] cookies) {
Map<String,String> map = new HashMap<String,String>();
String url = "http://friend.renren.com/myfriendlistx.do";
String responseString = "";
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(LOGON_SITE,LOGON_PORT);
GetMethod get = new GetMethod(url);
client.getState().addCookies(cookies);
// 分析HTML
try {
client.executeMethod(get);
responseString = get.getResponseBodyAsString();
if (responseString.lastIndexOf("var friends=") > -1
&& responseString.lastIndexOf("var hotfriends=[]") > -1) {
int stat = responseString.lastIndexOf("var friends=[") + 13;
int end = responseString.lastIndexOf("var hotfriends=[]") - 4;
responseString = responseString.substring(stat, end);
String ulist[] = responseString.split("\\},\\{");

// list
for (int i = 0; i < ulist.length; i++) {
//获取一个人的所有属性
Map<String,String> allProps = JsonUtil.json2Map(ulist[i]);
map.put(allProps.get("id"), allProps.get("head").replaceAll("\\\\/", "/"));
}
} else {
System.out.println("好友列表获取失败");
}
} catch (IOException e) {
e.printStackTrace();
}
get.releaseConnection();
return map;
}

public static void main(String[] args) {
String name = "xxx";
String passwd = "xxx";
getAllFriends(name, passwd);
}

/**
* 获取所有好友
* @param name
* @param passwd
*/
@SuppressWarnings("unchecked")
private static void getAllFriends(String name, String passwd) {
//获取所有朋友,和他们的头像。
Map<String,String> map = GetFriendMap(new RrLogin().login(name, passwd));
int i = 1;
int size = map.keySet().size();
for(Object obj : map.entrySet()) {
System.out.println(size + "-->" + i + ":");
Entry<String,String> one = (Entry<String,String>)obj;
String id = one.getKey();
String value = one.getValue();
saveOnePic(DEPT_PATH,id,value);
i++;
}
}

/**
* 保存一张图片
* @param deptPath
* @param id
* @param value
*/
private static void saveOnePic(String deptPath, String id, String value) {
System.out.println(id + ":" + value);
if (value !=null ) {
try {
URL url = new URL(value);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
File file = new File(deptPath + "\\" + id + ".jpg");
// 生成图片
InputStream in = conn.getInputStream();
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(file));
byte[] buf = new byte[2048];
int length = in.read(buf);
while (length != -1) {
out.write(buf, 0, length);
length = in.read(buf);
}
in.close();
out.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}
}




package on201104;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;

public class JsonUtil {

static String SEP_FU = ",";

static String SEP_FU2 = ":";

public static String[] json2Array(String jsonStr) {
if (StringUtils.isNotBlank(jsonStr)) {
jsonStr = jsonStr.replaceAll("\"", "").replaceAll("\\{", "").replaceAll("\\}", "");
if (jsonStr.contains(".,Ltd")) {
jsonStr = jsonStr.replace(".,Ltd", ".Ltd");
}
String[] props = jsonStr.split(SEP_FU);
return props;
}
return null;
}

public static Map<String,String> array2Map(String[] array) {
Map<String,String> map = new HashMap<String,String>();
String ssss = "WQWWQWQW";
if (array != null) {
for (String str : array) {
str = str.replaceFirst(SEP_FU2, ssss);
map.put(str.split(ssss)[0], str.split(ssss)[1]);
}
}
return map;
}

public static Map<String,String> json2Map(String jsonStr) {
return array2Map(json2Array(jsonStr));
}
}




package on201104;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

public class RrLogin {

static final String LOGON_SITE = "http://www.renren.com";

static final int LOGON_PORT = 80;

public Cookie[] login(String name, String pas) {
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
PostMethod post = new PostMethod("http://passport.renren.com/PLogin.do");
NameValuePair username = new NameValuePair("email", name);
NameValuePair password = new NameValuePair("password", pas);
NameValuePair origURL = new NameValuePair("origURL",
"http://home.renren.com/Home.do");
NameValuePair domain = new NameValuePair("domain", "renren.com");
NameValuePair formName = new NameValuePair("formName", "");
NameValuePair method = new NameValuePair("method", "");
post.setRequestBody(new NameValuePair[] { username, password, origURL,
domain, formName, method });
try {
client.executeMethod(post);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String responseString = null;
try {
responseString = new String(post.getResponseBodyAsString()
.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Cookie[] cookies = client.getState().getCookies();
client.getState().addCookies(cookies);
post.releaseConnection();

// 截取转跳地址
if (responseString.lastIndexOf("The URL has moved") > -1) {
responseString.substring(26, responseString.length() - 10);
String newUrl = responseString.substring(27, responseString
.length() - 11);

// 实施转跳
GetMethod get = new GetMethod(newUrl);
get.setRequestHeader("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0;)");
get.setRequestHeader("Cookie", cookies.toString());
try {
client.executeMethod(get);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
get.releaseConnection();
return client.getState().getCookies();
}
return null;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值