httpclient基本应用【L】

来源:互联网 发布:国债期货模拟软件 编辑:程序博客网 时间:2024/06/05 09:17

HttpClient在HttpURLConnection的升级

参考:http://blog.csdn.net/wangpeng047/article/details/19624529/

MAVEN 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.lxl.test</groupId>  <artifactId>httpclient</artifactId>  <packaging>war</packaging>  <version>0.0.1-SNAPSHOT</version>  <name>httpclient Maven Webapp</name>  <url>http://maven.apache.org</url>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>    <!-- httpClient -->    <dependency>        <groupId>org.apache.httpcomponents</groupId>        <artifactId>httpclient</artifactId>        <version>4.3.6</version>    </dependency>    <dependency>    <groupId>org.apache.httpcomponents</groupId>    <artifactId>httpmime</artifactId>    <version>4.3.6</version></dependency>    <!-- htmlunit    <dependency>    <groupId>net.sourceforge.htmlunit</groupId>    <artifactId>htmlunit</artifactId>    <version>2.15</version></dependency> -->  </dependencies>  <build>    <finalName>httpclient</finalName>  </build></project>

代码

package com.lxl.httpclient;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpUriRequest;import org.apache.http.entity.ContentType;import org.apache.http.entity.mime.MultipartEntityBuilder;import org.apache.http.entity.mime.content.FileBody;import org.apache.http.entity.mime.content.StringBody;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;public class HttpClientTest {public static String post(String url, Map<String, String> params) {//DefaultHttpClient httpclient = new DefaultHttpClient();CloseableHttpClient httpclient = HttpClients.createDefault(); String body = null;try {HttpPost post = postForm(url, params);body = invoke(httpclient, post);} catch (Exception e) {e.printStackTrace();} finally {try {httpclient.close();} catch (Exception e) {e.printStackTrace();}}return body;}private static HttpPost postForm(String url, Map<String, String> params) {HttpPost httpost = new HttpPost(url);List<NameValuePair> nvps = new ArrayList<NameValuePair>();Set<String> keySet = params.keySet();for (String key : keySet) {nvps.add(new BasicNameValuePair(key, params.get(key)));}try {httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));} catch (UnsupportedEncodingException e) {e.printStackTrace();}return httpost;}private static String invoke(HttpClient httpclient,HttpUriRequest httpost) {HttpResponse response = sendRequest(httpclient, httpost);String body = paseResponse(response);return body;}private static HttpResponse sendRequest(HttpClient httpclient,HttpUriRequest httpost) {HttpResponse response = null;try {response = httpclient.execute(httpost);} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return response;}private static String paseResponse(HttpResponse response) {HttpEntity entity = response.getEntity();//String charset = EntityUtils.getContentCharSet(entity);String body = null;try {body = EntityUtils.toString(entity, "UTF-8");} catch (ParseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return body;}public void get(String url) {          CloseableHttpClient httpclient = HttpClients.createDefault();          try {              // 创建httpget.                HttpGet httpget = new HttpGet(url);              System.out.println("executing request " + httpget.getURI());              // 执行get请求.                CloseableHttpResponse response = httpclient.execute(httpget);              try {                  // 获取响应实体                    HttpEntity entity = response.getEntity();                  System.out.println("--------------------------------------");                  // 打印响应状态                    System.out.println(response.getStatusLine());                  if (entity != null) {                      // 打印响应内容长度                        System.out.println("Response content length: " + entity.getContentLength());                      // 打印响应内容                        System.out.println("Response content: " + EntityUtils.toString(entity));                  }                  System.out.println("------------------------------------");              } finally {                  response.close();              }          } catch (ClientProtocolException e) {              e.printStackTrace();          } catch (ParseException e) {              e.printStackTrace();          } catch (IOException e) {              e.printStackTrace();          } finally {              // 关闭连接,释放资源                try {                  httpclient.close();              } catch (IOException e) {                  e.printStackTrace();              }          }      }/**      * 上传文件      */      public void upload(String url, File file) {        CloseableHttpClient httpclient = HttpClients.createDefault();          try {              HttpPost httppost = new HttpPost(url);                FileBody bin = new FileBody(file);              StringBody comment = new StringBody("A binary file of some kind", ContentType.TEXT_PLAIN);                HttpEntity reqEntity = MultipartEntityBuilder.create().addPart("bin", bin).addPart("comment", comment).build();                httppost.setEntity(reqEntity);                System.out.println("executing request " + httppost.getRequestLine());              CloseableHttpResponse response = httpclient.execute(httppost);              try {                  System.out.println("----------------------------------------");                  System.out.println(response.getStatusLine());                  HttpEntity resEntity = response.getEntity();                  if (resEntity != null) {                      System.out.println("Response content length: " + resEntity.getContentLength());                  }                  EntityUtils.consume(resEntity);              } finally {                  response.close();              }          } catch (ClientProtocolException e) {              e.printStackTrace();          } catch (IOException e) {              e.printStackTrace();          } finally {              try {                  httpclient.close();              } catch (IOException e) {                  e.printStackTrace();              }          }      } }