Http编程(二)使用Apache 的API实现
要下载jar包 import java.io.FileOutputStream;
import java.io.IOException; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils; /*
* 模拟下载
* 使用到的类:
* 1.HttpClient:
* 2.HttpResponse
* 3.HttpEntity
* 4.EntityUtils
*
*/
public class HttpDemo1 {
public static void main(String[] args) throws IOException {
// HttpClient:创建了客户端。
HttpClient client = new DefaultHttpClient();
// 请求 get:HttpGet
String path = "http://www.baidu.com/img/bdlogo.gif";
HttpGet get = new HttpGet(path);
// 让客户端执行请求。
HttpResponse response = client.execute(get);
// 数据全部在HttpResponse
// 1:响应码。
int code = response.getStatusLine().getStatusCode();
if(code == 200){
// 取出返回的数据。 数据封装到HttpEntity对象。
HttpEntity entity = response.getEntity();
// 如何获得HttpEntity对象中的数据。
byte[] b = EntityUtils.toByteArray(entity);
FileOutputStream fos = new FileOutputStream("e:\\bb.gif");
fos.write(b);
fos.flush();
fos.close();
}
}
}
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset; import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.FormBodyPart;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
/*
 * 使用的类:
 * HttpClient
 * HttpPost
 * FileBody
 * FormBodyPart
 * MultipartEntity
 * HttpResponse
 * EntityUtils
 * 
 */
public class HttpDemo5 {
    public static void main(String[] args) throws ClientProtocolException, IOException {
        //1:创建HttpClient 对象(创建客户端)
        HttpClient client = new DefaultHttpClient();
        //2:创建请求方式(web中的请求方式method)
        String uri = "http://localhost:8080/FileUpload/FileUploadServlet";
        HttpPost post = new HttpPost(uri);
        //3:包装要发送的数据(文件)
        //3.1:获取本地的文件
        File file = new File("e:\\aa.jpg");
        //3.2:创建FileBody对象(文件主体)
        FileBody fileBody = new FileBody(file);
        //3.3:创建FormBodyPart 对象(表单主体部分)
        FormBodyPart part = new FormBodyPart("form", fileBody);
        //4:创建MultipartEntity对象。MultipartEntity:多部件实体
        MultipartEntity entity = new MultipartEntity();
        //5:把表单主体部分添加到多部件实体中(将文件类型的数据添加到entity中)
        entity.addPart(part);
        //5:将普通文本数据添加到多部件实体中
        entity.addPart("username", new StringBody("哈哈", "text/html", Charset.forName("utf-8")));
        entity.addPart("password", new StringBody("123"));
        //6:设置请求的实体
        post.setEntity(entity);
        //7:让客户端执行请求(带有数据的请求),得到的是HttpResponse对象(响应对象)
        HttpResponse response = client.execute(post);
        //8:通过响应对象获取响应码
        int code = response.getStatusLine().getStatusCode();
        //9:如果响应码为200(成功响应码),则获取服务器返回的数据
        if(code == 200){
            //9.1:获取HttpEntity对象(通过响应来获取)
            HttpEntity entity2 = response.getEntity();
            //10:使用EntityUtils工具类,将获取到的数据(实体)转换为字节数组形式,任何文件都可以以字节的形式保存
            byte[] b = EntityUtils.toByteArray(entity2);
            //输出内容
            System.out.println(new String(b, "utf-8"));
        }
    }
}
Http编程(二)使用Apache 的API实现的更多相关文章
- Linux网络编程二、tcp连接API
		一.服务端 1.创建套接字: int socket(int domain, int type, int protocol); domain:指定协议族,通常选用AF_INET. type:指定sock ... 
- 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题
		1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ... 
- Linux系统编程@多线程编程(二)
		线程的操作 线程标识 线程的ID表示数据类型:pthread_t (内核中的实现是unsigned long/unsigned int/指向pthread结构的指针(不可移植)几种类型) 1.对两个线 ... 
- java GUI编程二
		java基础学习总结--GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import j ... 
- 微服务实战(二):使用API Gateway
		微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ... 
- 微服务实战(二):使用API Gateway - DockOne.io
		原文:微服务实战(二):使用API Gateway - DockOne.io [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用 ... 
- python异步IO编程(二)
		python异步IO编程(二) 目录 开门见山 Async IO设计模式 事件循环 asyncio 中的其他顶层函数 开门见山 下面我们用两个简单的例子来让你对异步IO有所了解 import asyn ... 
- Linux shell脚本编程(二)
		Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ... 
- (原创)LAMP搭建之二:apache配置文件详解(中英文对照版)
		LAMP搭建之二:apache配置文件详解(中英文对照版) # This is the main Apache server configuration file. It contains the # ... 
- Java并发编程二三事
		Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ... 
随机推荐
- Spring 、 CXF 整合 swagger 【试炼】
			官网:http://swagger.io/ http://swagger.io/specification/ 上面就是描述了什么是 SWAGGER OBJECT 2. 如何用jax-rs 注解方式产生 ... 
- 二)spring 集成 ehcache jgroups 集群
			依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-co ... 
- AWS S3 CLI的安装和配置
			以Ubuntu系统为例,说明如何使用CLI调试AWS S3环境: 1. 安装 # sudo pip install awscli 2. 配置AWS CLI 执行命令aws configure, 注意, ... 
- springmvc 开涛 数据验证
			两种方式:编程和声明. 编程需要:验证器,控制器,servlet.xml,错误码设置 声明需要:加jar包,控制器,跟孔浩讲得类似 错误消息设置的两种方式:硬编码:从资源文件中读取(默认,自定义). 
- Spring 配置 事务的几种方式
			Spring配置文件中关于事务配置总是由三个组成部分,DataSource.TransactionManager和代理机制这三部分,无论是那种配置方法,一般变化的只是代理机制这块! 首先我创建了两个类 ... 
- spring mvc的例子
			现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ... 
- [label][politic-video]李锡锟的政治学视频下载链接
			李锡锟政治学 1.http://r15---sn-p5qlsn7y.googlevideo.com/videoplayback?initcwndbps=1471000&signature=09 ... 
- 二叉树(Binary Tree)相关算法的实现
			写在前面: 二叉树是比较简单的一种数据结构,理解并熟练掌握其相关算法对于复杂数据结构的学习大有裨益 一.二叉树的创建 [不喜欢理论的点我跳过>>] 所谓的创建二叉树,其实就是让计算机去存储 ... 
- 【NumberValidators】增值税发票代码验证
			同大陆身份证验证一样,该部分是按照国家增值税发票代码的定制规则,进行发票代码验证,如果需要查验发票信息是否正确,应该通过第三方接口(大约一毛钱查验一次),或者直接上国家税务总局全国增值税发票查验平台进 ... 
- C#之使用CefSharp创建客户端
			安装NuGet包 在Visio studio中右击解决方案,选择管理NuGet包,搜索安装CefSharp.WinForms. 配置工作 (1)首先右击项目选择属性,在"生成"选项 ... 
