使用HttpClient4.4 模拟http请求

来源:互联网 发布:用友t3重装恢复数据 编辑:程序博客网 时间:2024/05/18 02:59

3、使用HttpClient进行网络处理的基本步骤

(1)通过get的方式获取到Response对象。

CloseableHttpClient httpClient = HttpClients.createDefault();  HttpGet httpGet = new HttpGet("http://www.baidu.com/");  CloseableHttpResponse response = httpClient.execute(httpGet);  

注意,必需要加上http://的前缀,否则会报:Target host is null异常。


(2)获取Response对象的Entity。


注:HttpClient将Response的正文及Request的POST/PUT方法中的正文均封装成一个HttpEntity对象。可以通过entity.getContenType(),entity.getContentLength()等方法获取到正文的相关信息。但最重要的方法是通过getContent()获取到InputStream对象。

(3)通过Entity获取到InputStream对象,然后对返回内容进行处理。


package com.test.demo;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import java.io.Writer;import java.util.Scanner;import org.apache.http.HttpEntity;import org.apache.http.HttpStatus;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;public class GetPostDemo {public static void main(String args[]){CloseableHttpClient httpclient = HttpClients.createDefault();HttpGet httpGet = new HttpGet("http://v.polyv.net/uc/cata/list?cataid=1");  try {CloseableHttpResponse response = httpclient.execute(httpGet);System.out.println("----------------"+response);/** * 注:HttpClient将Response的正文及Request的POST/PUT方法中的正文均封装成一个HttpEntity对象。 * 可以通过entity.getContenType(),entity.getContentLength()等方法获取到正文的相关信息。 * 但最重要的方法是通过getContent()获取到InputStream对象。 */HttpEntity entity3 = response.getEntity(); System.out.println("----------------"+entity3);System.out.println("----------------"+entity3.getContentType());System.out.println("----------------"+entity3.getContentLength());System.out.println("----------------"+entity3.getContent());InputStream is = null;          Scanner sc = null;          Writer os = null;          if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {              try {                  // 2、获取response的entity。                  HttpEntity entity = response.getEntity();                    // 3、获取到InputStream对象,并对内容进行处理                  is = entity.getContent();                  sc = new Scanner(is);                  // String filename = path.substring(path.lastIndexOf('/')+1);                  //String filename = "d:\\2.txt";                  //os = new PrintWriter(filename);                 String contentStr="";                while (sc.hasNext()) {                      //os.write(sc.nextLine());                                contentStr=contentStr+sc.nextLine();                //System.out.println("------"+sc.nextLine());                }                    System.out.println("------"+contentStr);            } catch (ClientProtocolException e) {                  e.printStackTrace();              } finally {                  if (sc != null) {                      sc.close();                  }                  if (is != null) {                      is.close();                  }                  if (os != null) {                      os.close();                  }                  if (response != null) {                      response.close();                  }              }          }        } catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }}


0 0
原创粉丝点击