ClientUtil.java
上传用户:xie_wn
上传日期:2022-03-04
资源大小:941k
文件大小:3k
源码类别:

网络截获/分析

开发平台:

Java

  1. package com.util;
  2. import java.io.IOException;
  3. import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
  4. import org.apache.commons.httpclient.Header;
  5. import org.apache.commons.httpclient.HttpClient;
  6. import org.apache.commons.httpclient.HttpException;
  7. import org.apache.commons.httpclient.HttpStatus;
  8. import org.apache.commons.httpclient.NameValuePair;
  9. import org.apache.commons.httpclient.methods.GetMethod;
  10. import org.apache.commons.httpclient.methods.PostMethod;
  11. import org.apache.commons.httpclient.params.HttpMethodParams;
  12. public class ClientUtil {
  13. //HttpClient
  14.  public String get(String url)
  15.  {
  16.  HttpClient httpClient = new HttpClient();
  17.   //创建GET方法的实例
  18.   GetMethod getMethod = new GetMethod(url);
  19.   //使用系统提供的默认的恢复策略
  20.   getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
  21.     new DefaultHttpMethodRetryHandler());
  22.   try {
  23.    //执行getMethod
  24.   int statusCode = httpClient.executeMethod(getMethod);
  25.    if (statusCode != HttpStatus.SC_OK) {
  26.     System.err.println("Method failed: "
  27.       + getMethod.getStatusLine());
  28.    }
  29.    //读取内容 
  30.    byte[] responseBody = getMethod.getResponseBody();
  31.    //处理内容
  32.    System.out.println(new String(responseBody));
  33.    return new String(responseBody);
  34.   } catch (HttpException e) {
  35.    //发生致命的异常,可能是协议不对或者返回的内容有问题
  36.    System.out.println("Please check your provided http address!");
  37.    e.printStackTrace();
  38.   } catch (IOException e) {
  39.    //发生网络异常
  40.    e.printStackTrace();
  41.   } finally {
  42.    //释放连接
  43.    getMethod.releaseConnection();
  44.   } 
  45.   return null;
  46.  }
  47.  public String post(String url,NameValuePair[] data) 
  48.  {
  49.   HttpClient httpClient = new HttpClient();
  50. PostMethod postMethod = new PostMethod(url);
  51. //  填入各个表单域的值
  52. //NameValuePair[] data = { new NameValuePair("id", "youUserName"),
  53. //new NameValuePair("passwd", "yourPwd") };
  54. postMethod.setRequestBody(data);
  55. //  执行postMethod
  56. int statusCode;
  57. try {
  58. statusCode = httpClient.executeMethod(postMethod);
  59. if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || 
  60. statusCode == HttpStatus.SC_MOVED_TEMPORARILY) {
  61.     // 从头中取出转向的地址
  62.     Header locationHeader = postMethod.getResponseHeader("location");
  63.     String location = null;
  64.     if (locationHeader != null) {
  65.      location = locationHeader.getValue();
  66.      System.out.println("The page was redirected to:" + location);
  67.     } else {
  68.      System.err.println("Location field value is null.");
  69.     }
  70.    
  71. }
  72.  byte[] responseBody = postMethod.getResponseBody();
  73. // System.out.println(new String(responseBody));
  74. return new String(responseBody);
  75. } catch (HttpException e) {
  76. // TODO Auto-generated catch block
  77. e.printStackTrace();
  78. } catch (IOException e) {
  79. // TODO Auto-generated catch block
  80. e.printStackTrace();
  81. }
  82. return null;
  83.  }
  84. }