要下载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. Spring3.x错误---- Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the class path or specify proxy interfaces.

    Spring3.x错误: 解决方法: 缺少cglib的包, 下载地址: http://sourceforge.net/projects/cglib/files/latest/download?sour ...

  2. (转)code first基础

    转自:http://tech.it168.com/a2011/0719/1220/000001220362_all.shtml [IT168 技术]随着.NET 4.0时代的到来,开发者越来越关注如何 ...

  3. 第二届普适计算和信号处理及应用国际会议论文2016年 The 2nd Conference on Pervasive Computing, Signal Processing and Applications(PCSPA, 2016)

    A New Method for Mutual Coupling Correction of Array Output Signal 一种阵列输出信号互耦校正的新方法 Research of Robu ...

  4. HDU1045 Fire Net(DFS枚举||二分图匹配) 2016-07-24 13:23 99人阅读 评论(0) 收藏

    Fire Net Problem Description Suppose that we have a square city with straight streets. A map of a ci ...

  5. Vuejs——(5)v-on

    版权声明:出处http://blog.csdn.net/qq20004604   目录(?)[+]   资料来于官方文档: http://cn.vuejs.org/guide/events.html ...

  6. 团队博客-第六周:Alpha阶段项目复审(科利尔拉弗队)

    团队的排名-点评:以下排名点评谨代表个人观点,如有冒犯,评论联系删除 小组名字和链接 优点 缺点,bug报告(至少140字) 最终名次(无并列) 中午吃啥队 微信小程序应用,新型app会是一个便利的使 ...

  7. AME

    http://wenku.baidu.com/view/a9dbebc789eb172ded63b7f4.htmlhttp://wenku.baidu.com/view/dde6eb040740be1 ...

  8. what is HTTP OPTIONS verb

    The options verb is sent by browser to see if server accept cross origin request or not, this proces ...

  9. ASP.NET开发常用简单实用的方法

    ASP.NET开发简单实用的方法 一.打印和导出 打印和导出EXCEL在目前ASP.NET开发中可以说是必要的,有时候针对不同数据难易程度下,用有效快速的方法是解决办法的有效途径之一. 1.打印 后台 ...

  10. C#: 获取当前路径不要用Environment.CurrentDirectory

    网上大把文章写到C#获取当前路径的方法如下: // 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. Syste ...