【HttpClient】事例学习

要下载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"));
        }
        
    }

}

  

 

posted on 2016-08-16 20:50  月下美妞1314  阅读(121)  评论(0编辑  收藏  举报