`

HttpClient 登陆iteye

    博客分类:
  • java
阅读更多
	static String cookie;
	static String url ="http://www.iteye.com/login";
	static String name="xxx";
	static String password ="xxx";
	public static void main(String[] args) throws Exception{
		//keep http connection execute in same httpclient
		DefaultHttpClient httpClient = new DefaultHttpClient();
		HttpGet get = new HttpGet(url);
		HttpResponse resp = httpClient.execute(get);
		cookie = resp.getFirstHeader("Set-Cookie").getValue();
		HttpEntity e = resp.getEntity();
		String r =EntityUtils.toString(e,"gbk");
		
		List<NameValuePair> params = new ArrayList<NameValuePair>();
	    params.add(new BasicNameValuePair("name", name));
	    params.add(new BasicNameValuePair("password", password));
	    params.add(new BasicNameValuePair("authenticity_token", getToken(r)));
		postMethod(params, httpClient);
	}
	
	static String getToken(String html){
		//解析下返回内容,获取登陆必须的token参数
		Document doc = Jsoup.parse(html);
		Element ef = doc.getElementById("login_form");
		Elements einputs = ef.getElementsByTag("input");
		for(Element e : einputs){
			if(e.attr("name").equals("authenticity_token")){
				return e.attr("value");
			}
		}
		return "";
	}
	public static void postMethod(List<NameValuePair> params, HttpClient httpClient) throws Exception, IOException{
		HttpPost post = new HttpPost(url);
/*		
 * 		没用到
 *      post.setHeader("Host", "www.iteye.com");
		post.setHeader("Origin", "http://www.iteye.com");
		post.setHeader("Referer", "http://www.iteye.com/login");
		post.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36");
		post.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*;q=0.8");
		post.setHeader("Accept-Language", "zh-CN,zh;q=0.8,en;q=0.6");
		post.setHeader("Cache-Control", "max-age=0");
		post.setHeader("Connection", "keep-alive");
		post.setHeader("Content-Type", "application/x-www-form-urlencoded");
		post.setHeader("Cookie", cookie);*/
		
	    post.setEntity(new UrlEncodedFormEntity(params));
	    HttpResponse response = httpClient.execute(post);
	    int status = response.getStatusLine().getStatusCode();
	    if(status==HttpStatus.SC_MOVED_PERMANENTLY || status==HttpStatus.SC_MOVED_TEMPORARILY){//redirect
	    	post.releaseConnection();
	    	String location = response.getFirstHeader("location").getValue();
	    	HttpPost redirectPost = new HttpPost(location);
	    	HttpResponse resp = httpClient.execute(redirectPost);
	    	HttpEntity entity = resp.getEntity();
	    	System.out.println(resp.getFirstHeader("Set-Cookie").getValue());
	 	    String result =EntityUtils.toString(entity,"gbk");
	 	    //登陆后返回首页内容,若想进一步获取内容,可以继续解析返回内容
	 	    System.out.println(result);
	 	    redirectPost.releaseConnection();
	    }
	}
0
1
分享到:
评论

相关推荐

    httpclient3 自动登陆淘宝, 开心网

    标题中的“httpclient3 自动登陆淘宝, 开心网”指的是使用Apache HttpClient 3.x库来实现自动化登录淘宝和开心网的功能。HttpClient是一个强大的HTTP客户端API,它允许开发者模拟浏览器行为,发送HTTP请求并接收...

    httpclient模拟登录实例

    在学习和使用HttpClient时,建议参考官方文档、博客文章(如博文链接中的“https://shaozhen.iteye.com/blog/950472”),以及在线社区的讨论和示例代码,以深入理解和掌握这个强大的工具。记住,实践是检验真理的...

    httpclient

    标题中的“httpclient”指的是Apache HttpClient,这是一个广泛使用的Java库,用于执行...如果你遇到具体的代码问题或需要深入理解某个特性,通常可以参考HttpClient的官方文档或在线社区(如ITEYE博客)中的经验分享。

    使用httpClient访问https+443端口号。

    描述中提到的链接指向了一个ITEYE博客文章,虽然内容没有给出,但通常这类文章会包含如何配置和使用HttpClient来发送HTTPS请求的具体步骤。在实际操作中,我们可能需要关注以下几点: 1. **导入依赖**:文件列表中...

    httpclient 获取技术博客列表

    描述中提到的“博文链接:https://change-jeans.iteye.com/blog/2222052”,这可能是一个具体的博客文章地址,该文章详细介绍了如何使用HttpClient进行操作。在这个链接中,作者可能会解释如何配置HttpClient,建立...

    HTTPClient 4.3.X

    描述中提到的链接指向了一个ITEYE博客,虽然内容未给出,但可以推测博主可能分享了关于使用HTTPClient 4.3.X的一些经验,可能包括配置,最佳实践,或者是遇到的问题及解决方案。 标签 "源码" 暗示我们可能会讨论到...

    httpclient 查询股票信息

    描述中提到的“博文链接:https://tristan-s.iteye.com/blog/1130983”,虽然没有直接提供具体实现细节,但通常这类博客文章会包含示例代码和步骤说明,教读者如何使用HTTPClient进行网络请求。通常,这会涉及创建...

    使用HttpClient登录网易邮箱

    使用HttpClient登录网易邮箱 博文链接:https://bps.iteye.com/blog/136231

    使用HTMLPARSER和HTTPCLIENT制作网络爬虫,附赠相关技术文档。

    在提供的链接中,有一篇名为"azure2a.iteye.com/blog/901363"的博客文章,它应该详细介绍了如何结合HTMLPARSER和HTTPCLIENT实现网络爬虫的具体步骤和代码示例。阅读这篇博客将有助于你深入理解这两个库的用法,并...

    Java中访问页面的HttpClient类

    这篇博客(原文链接:https://jxdwuao.iteye.com/blog/719107)将深入探讨如何使用HttpClient进行网页访问,并探讨其源码和工具特性。 一、HttpClient简介 HttpClient是一个功能强大且高度可定制的HTTP客户端实现,...

    HttpClient各种使用方法

    NULL 博文链接:https://wenkaixuan.iteye.com/blog/2109590

    HttpClient使用

    这篇博客文章《HttpClient使用》(链接:https://leesonhomme.iteye.com/blog/491095)可能涵盖了HttpClient的基本用法和一些实用技巧。由于没有具体的描述,我们将基于HttpClient的一般知识点进行详细介绍。 1. **...

    HttpURLConnection和HTTPClient的比较,以及使用规则

    NULL 博文链接:https://xiaowei-qi-epro-com-cn.iteye.com/blog/1973295

    关于android使用httpclient上传的问题

    NULL 博文链接:https://eagalwood.iteye.com/blog/2323296

    Java通过HttpClient调用百度地图Demo

    在Java编程中,HttpClient是一个非常常用的库,用于执行HTTP请求,可以用来与各种...同时,博文链接(https://bugyun.iteye.com/blog/2395912)也提供了更多关于这个主题的详细解释和讨论,可以作为学习和参考的资源。

Global site tag (gtag.js) - Google Analytics