`

HTTPClient4的典型小例子

阅读更多

1.简单的获取一个HTML页面的内容

package com.bijian.study;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientGetHtmlDemo {

	public static void main(String[] args) throws Exception {
		HttpClientGetHtmlDemo httpClientDemo = new HttpClientGetHtmlDemo();
		httpClientDemo.getHTML();
	}
	
	/**
	 * 简单的获取一个HTML页面的内容
	 * @throws Exception
	 */
	public void getHTML() throws Exception {
		CloseableHttpClient httpclient = HttpClients.createDefault();
		HttpGet httpget = new HttpGet("http://www.baidu.com/");
		HttpResponse response = httpclient.execute(httpget);
		HttpEntity entity = response.getEntity();
		String html = EntityUtils.toString(entity);
		System.out.println(html);
		httpclient.close();
	}
}

 

2.下载一个图片到本地

package com.bijian.study;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

public class HttpClientDownloadFileDemo {

	public static void main(String[] args) throws Exception {
		
		HttpClientDownloadFileDemo httpClientDemo = new HttpClientDownloadFileDemo();
		
		httpClientDemo.downloadFile();
	}
	
	/**
	 * 下载一个图片到本地
	 * @throws Exception
	 */
	public void downloadFile() throws Exception {
		// 图片的网址
		String url = "http://ww2.sinaimg.cn/large/9d57a855jw1dqpv9fp4yuj.jpg";

		String destfilename = "D:\\cat.jpg";
		// 生成一个httpclient对象
		CloseableHttpClient httpclient = HttpClients.createDefault();

		HttpGet httpget = new HttpGet(url);
		HttpResponse response = httpclient.execute(httpget);
		HttpEntity entity = response.getEntity();
		InputStream in = entity.getContent();
		File file = new File(destfilename);
		try {
			FileOutputStream fout = new FileOutputStream(file);
			int l = -1;
			byte[] tmp = new byte[1024];
			while ((l = in.read(tmp)) != -1) {
				fout.write(tmp, 0, l);
			}
			fout.flush();
			fout.close();
		} finally {
			// 关闭低层流。
			in.close();
		}
		httpclient.close();
	}
}

        运行结束后,我们可以到D盘下看到cat.jpg,打开即可看到这只可爱又漂亮的猫。



3.post模拟人人网登陆

package com.bijian.study;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class HttpClientLoginDemo {
	private CloseableHttpClient httpclient;
	private HttpPost httppost;// 用于提交登陆数据
	private HttpGet httpget;// 用于获得登录后的页面
	private String login_success;// 用于构造上面的HttpGet

	public HttpClientLoginDemo() {
		httpclient = HttpClients.createDefault();
		// 人人的登陆界面网址
		httppost = new HttpPost("http://www.renren.com/PLogin.do");
	}

	public void logIn(String name, String password) throws Exception {
		// 打包将要传入的参数
		List<NameValuePair> params = new ArrayList<NameValuePair>();
		params.add(new BasicNameValuePair("email", name));
		params.add(new BasicNameValuePair("password", password));
		httppost.setEntity(new UrlEncodedFormEntity(params));
		try {
			// 提交登录数据
			HttpResponse re = httpclient.execute(httppost);
			// 获得跳转的网址
			Header locationHeader = re.getFirstHeader("Location");
			// 登陆不成功
			if (locationHeader == null) {
				System.out.println("登陆不成功,请稍后再试!");
				return;
			} else// 成功
			{
				login_success = locationHeader.getValue();// 获取登陆成功之后跳转链接
				System.out.println("成功之后跳转到的网页网址:" + login_success);
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void PrintText() throws IOException {
		httpget = new HttpGet(login_success);
		HttpResponse re2 = null;

		try {
			re2 = httpclient.execute(httpget);
			// 输出登录成功后的页面
			String str = EntityUtils.toString(re2.getEntity());
			System.out.println(str);
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			httppost.abort();
			httpget.abort();
			httpclient.close();
		}
	}

	public static void main(String[] args) throws Exception {
		
		String name = "username", password = "password";
		// 自己的账号,口令
		HttpClientLoginDemo httpClientLoginDemo = new HttpClientLoginDemo();
		httpClientLoginDemo.logIn(name, password);
		httpClientLoginDemo.PrintText();
	}
}

        如果账号密码不对,程序执行结果好像是对的,但稍加看下输出的内容,其实只是做了页面跳转。

 

文章来源:http://my.oschina.net/v5871314/blog/204812?fromerr=FPgwXe9e

  • 大小: 134.2 KB
分享到:
评论

相关推荐

    java 访问 wcf 示例(使用的HttpClient)

    Java访问WCF服务是跨平台通信的一个典型场景,其中WCF(Windows Communication Foundation)是微软提供的一个用于构建、部署和管理服务的框架。本示例将重点讲解如何使用Java的HttpClient库来调用WCF服务。 一、WCF...

    Android_3D游戏开发技术详解与典型案例+Android应用开发揭秘_杨丰盛

    《Android_3D游戏开发技术详解与典型案例》与《Android应用开发揭秘》是两本深入探讨Android平台开发的专业书籍,由杨丰盛编著。这两本书涵盖了从基础到高级的Android开发技术,特别强调了3D游戏开发和普通应用开发...

    网银在线支付例子

    4. **用户通知**:支付成功后,系统应向用户发送支付成功的通知,这可能通过电子邮件、短信或者应用内消息的形式实现。 5. **异常处理**:在支付过程中可能出现各种异常情况,如网络问题、银行接口错误等,需要有...

    Android开发案例驱动教程 配套代码

    15.1 典型云端应用--城市天气信息服务 372 15.2 网络通信技术与实现 374 15.2.1 网络通信技术介绍 376 15.2.2 Java URL类实现方式 377 15.2.3 Apache HttpClient实现方式 378 15.3 数据交换格式 380 15.3.1 纯...

    java开发的一个小例子,important

    在Java开发领域,小例子往往是学习和理解编程概念的关键。这个名为"important"的压缩包文件包含了一个典型的Java项目——myproject,它可能是为了展示一个基础但全面的Java编程概念或技术。通过分析这个项目,我们...

    Android典型技术模块开发详解

    第四篇 Android应用开发案例 第13章 Ksoap2 13.1 SOAP协议 13.1.1 请求 13.1.2 响应 13.2 WSDL介绍 13.3 Ksoap2应用——天气预报 13.4 Ksoap2参数类型 13.4.1 CXF框架的Web Service 13.4.2 Android端开发 13.5 Base...

    C# 开发典型模块大全源代码

    4. 多线程:C#中的System.Threading命名空间提供了多线程编程的支持,源代码可能涵盖并发控制、线程同步、异步编程(async/await)等内容。 5. 文件操作:C#提供了System.IO命名空间,包含读写文件、目录管理等功能...

    Java编程案例精解素材.rar

    5. **俄罗斯方块**:这是一个典型的图形游戏开发案例,涉及到图形用户界面(GUI)编程,事件处理,动画,以及游戏逻辑。Java的Swing或JavaFX库可以用来创建游戏界面,而游戏循环和逻辑则需要使用基础的数据结构和...

    Java 编程百个例子

    Java编程百个例子是针对Java初学者和进阶者的一份宝贵资源,它包含了各种典型且实用的编程示例,旨在帮助学习者更好地理解和掌握Java语言的核心概念与技术。通过这些例子,你可以深入理解Java的基本语法、面向对象...

    《Android开发案例驱动教程》样章.pdf

    在Android平台上,典型的“云端”应用案例包括预装的Gmail、日历和Google Map等服务。本章节聚焦于一个具体的Android天气信息查询案例,旨在展示如何构建一个云端应用。 #### 三、关键技术解析 1. **数据来源与...

    c#程序的100个实例(绝对精品)

    "C#程序的100个实例(绝对精品)"提供了一套丰富的实践案例,旨在帮助开发者深入理解C#的特性并提升编程技能。这100个实例涵盖了C#的基础到进阶知识,包括但不限于变量、数据类型、控制流、函数、类与对象、异常处理...

    C#开发典型模块大全之我的浏览器模块源代码

    【标题】"C#开发典型模块大全之我的浏览器模块源代码"揭示了使用C#编程语言构建一个自定义浏览器模块的实践案例。在C#的世界里,开发这样的模块需要对.NET Framework有深入的理解,尤其是对Windows Forms或WPF...

    Java典型应用彻查1000例-网络应用开发

    书中的例子可能会涵盖如何使用这些格式处理网络数据。 4. **HTTP协议**:作为互联网上最广泛使用的应用层协议,HTTP在Java网络应用开发中占有重要地位。Java的HttpURLConnection和HttpClient类提供了解析和构建HTTP...

    Java典型应用彻查1000例第二卷:网络应用开发(源码+PPT+习题).rar

    《Java典型应用彻查1000例第二卷:网络应用开发》是一本深度探讨Java在互联网应用开发中的实践教程,包含丰富的源码示例、PPT讲解和配套习题,旨在帮助读者全面掌握Java在网络编程中的核心技能。这本书不仅提供了...

    angular小项目

    这个“angular小项目”是基于Angular框架实现的一个实践案例,旨在展示Angular的核心特性和最佳实践。下面我们将深入探讨Angular的相关知识点,并结合项目文件名进行解析。 1. **模块化(Modules)** 在Angular中...

    C#开发典型模块大全--网页浏览器模块

    在这个例子中,`webBrowser1.Navigate()`方法用于加载指定的网页,而`Navigating`事件则可以用来监听导航行为。 然而,`WebBrowser`控件基于较旧的Internet Explorer渲染引擎,可能不支持最新的Web标准和技术。为了...

    c#编程实战宝典(付强,丁宁)所赠典型模块与项目开发源程序

    该书旨在帮助读者掌握C#语言的实际应用,通过丰富的实战案例来提升编程技能。随书附带的压缩包文件提供了书中各个章节的源程序代码,方便读者对照学习,深入理解书中讲解的技术点。 这个压缩包涵盖了从chap01到chap...

    HTTP格式详解_详细介绍了HTTP传输协议参数

    6. **User-Agent**:描述了发出请求的客户端信息,例如`JakartaCommons-HttpClient/3.1`表明请求来自Jakarta Commons HttpClient库的第3.1版。 7. **Host**:指明了请求的目标服务器地址,包括IP地址和端口号,如`...

Global site tag (gtag.js) - Google Analytics