要下载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实现的更多相关文章

  1. Linux网络编程二、tcp连接API

    一.服务端 1.创建套接字: int socket(int domain, int type, int protocol); domain:指定协议族,通常选用AF_INET. type:指定sock ...

  2. 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题

    1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...

  3. Linux系统编程@多线程编程(二)

    线程的操作 线程标识 线程的ID表示数据类型:pthread_t (内核中的实现是unsigned long/unsigned int/指向pthread结构的指针(不可移植)几种类型) 1.对两个线 ...

  4. java GUI编程二

    java基础学习总结--GUI编程(二) 一.事件监听 测试代码一: 1 package cn.javastudy.summary; 2 3 import java.awt.*; 4 import j ...

  5. 微服务实战(二):使用API Gateway

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  6. 微服务实战(二):使用API Gateway - DockOne.io

    原文:微服务实战(二):使用API Gateway - DockOne.io [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用 ...

  7. python异步IO编程(二)

    python异步IO编程(二) 目录 开门见山 Async IO设计模式 事件循环 asyncio 中的其他顶层函数 开门见山 下面我们用两个简单的例子来让你对异步IO有所了解 import asyn ...

  8. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  9. (原创)LAMP搭建之二:apache配置文件详解(中英文对照版)

    LAMP搭建之二:apache配置文件详解(中英文对照版) # This is the main Apache server configuration file. It contains the # ...

  10. Java并发编程二三事

    Java并发编程二三事 转自我的Github 近日重新翻了一下<Java Concurrency in Practice>故以此文记之. 我觉得Java的并发可以从下面三个点去理解: * ...

随机推荐

  1. Ubuntu 16.04下安装网络流量分析工具 Wireshark

    本文链接地址:https://www.linuxidc.com/Linux/2016-08/134526.htm 切勿用商业用途 sudo apt-add-repository ppa:wiresha ...

  2. 3D UI场景中,把XY平面的尺寸映射为屏幕像素的数学模型推导

    概述及目录(版权所有,请勿转载,欢迎读者提出错误) 之前用kanzi的3D UI引擎和cocos-2d的时候都有遇到过这个问题,就如何把3D场景中的XY平面的尺寸映射为与屏幕像素一一对应的,即XY平面 ...

  3. Java性能调优:利用JFR生成性能日志

    Java性能调优作为大型分布式系统提供高性能服务的必修课,其重要性不言而喻. 好的分析工具能起到事半功倍的效果,利用分析利器JMC.JFR,可以实现性能问题的准确定位. 本文主要阐述如何利用JFR生成 ...

  4. 几个经典的数学库之一学习---VCGlib(2)

    几个经典的数学库之一学习---VCGlib(2) 1. Optional Component(可选的组件) 有许多Vertex和Face的属性并不是一直都是必要的,如Face-Face的邻接关系.VC ...

  5. nodejs async

    官网:https://github.com/caolan/async 流程控制:简化十种常见流程的处理集合处理:如何使用异步操作处理集合中的数据工具类:几个常用的工具类 流程控制 详细说明:http: ...

  6. 自定义cscope-index

    目标: 1)生成索引文件时可以包含java文件: 2)cscope.in.out和cscope.po.out文件,加快cscope的索引速度 3)生成索引文件时,不搜索/usr/include目录 解 ...

  7. express session

    一.什么是session? 最近在学习node.js 的express框架,接触到了关于session方面的内容.翻阅了一些的博客,学到了不少东西,发现一篇博文讲的很好,概念内容摘抄如下: Sessi ...

  8. C# volatile 关键字

    volatile 就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier).它是被设计用来修饰被不同线程访问和修改的变量.如果不加入volatile,基本上会导 ...

  9. C# 委托和接口

    能用委托解决的事情,接口也都可以解决.如下所示: public static void Main() { , , , }; Util.TransformAll(values, new Squarer( ...

  10. [兼容]——IE 8 常见兼容性问题

    接触了一个PC端网页开发的项目,要求兼容到IE 8,遇到不少坑,在这里记录下: 1.IE8 的兼容性视图 bug描述:IE8有许多新更新,但微软为了兼容以前的IE浏览器,提出了"兼容性视图& ...