• HttpClient


    介绍下一篇上好的文章,对HttpClient有很全很详细的见解https://www.ibm.com/developerworks/cn/opensource/os-cn-crawler/

    这个是里面的部分内容

       1:  /* 1 生成 HttpClinet 对象并设置参数*/
       2:    HttpClient httpClient=new HttpClient();
       3:    //设置 Http 连接超时为5秒
       4:  httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
       5:    
       6:    /*2 生成 GetMethod 对象并设置参数*/
       7:    GetMethod getMethod=new GetMethod(url);     
       8:    //设置 get 请求超时为 5 秒
       9:  getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,5000);
      10:    //设置请求重试处理,用的是默认的重试处理:请求三次
      11:  getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
      12:            new DefaultHttpMethodRetryHandler());
      13:    
      14:    /*3 执行 HTTP GET 请求*/
      15:    try{ 
      16:        int statusCode = httpClient.executeMethod(getMethod);
      17:        /*4 判断访问的状态码*/
      18:        if (statusCode != HttpStatus.SC_OK) 
      19:        {
      20:  System.err.println("Method failed: "+ getMethod.getStatusLine());
      21:        }
      22:    
      23:        /*5 处理 HTTP 响应内容*/
      24:        //HTTP响应头部信息,这里简单打印
      25:    Header[] headers=getMethod.getResponseHeaders();
      26:        for(Header  h:  headers)
      27:              System.out.println(h.getName()+" "+h.getValue());*/
      28:        //读取 HTTP 响应内容,这里简单打印网页内容
      29:        byte[] responseBody = getMethod.getResponseBody();//读取为字节数组
      30:  System.out.println(new String(responseBody));
      31:        //读取为 InputStream,在网页内容数据量大时候推荐使用
      32:        InputStream response = getMethod.getResponseBodyAsStream();//
      33:  
      34:  }
      35:  catch (HttpException e) 
      36:  {
      37:        // 发生致命的异常,可能是协议不对或者返回的内容有问题
      38:            System.out.println("Please check your provided http address!");
      39:  e.printStackTrace();
      40:       } 
      41:  catch (IOException e)
      42:    {
      43:              // 发生网络异常
      44:          e.printStackTrace();
      45:       } finally {
      46:                   /*6 .释放连接*/
      47:              getMethod.releaseConnection();           
      48:              }

    其实我只是想利用它来模 拟输入用户名和口令进行登录然后访问另一个页面

    但是关键问题还是怎么得到NameValuePair name = new NameValuePair("name", "ld"); 里的key和value,还是不明白
       1:  /*
       2:   * Created on 2003-12-7 by Liudong
       3:   */
       4:  package http.demo;
       5:  import org.apache.commons.httpclient.*;
       6:  import org.apache.commons.httpclient.cookie.*;
       7:  import org.apache.commons.httpclient.methods.*;
       8:  /**
       9:   * 用来演示登录表单的示例
      10:   * @author Liudong
      11:   */
      12:  public class FormLoginDemo {
      13:      static final String LOGON_SITE = "localhost";
      14:      static final int    LOGON_PORT = 8080;
      15:     
      16:      public static void main(String[] args) throws Exception{
      17:         HttpClient client = new HttpClient();
      18:         client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
      19:        
      20:         //模拟登录页面login.jsp->main.jsp
      21:         PostMethod post = new PostMethod("/main.jsp");
      22:         NameValuePair name = new NameValuePair("name", "ld");      
      23:         NameValuePair pass = new NameValuePair("password", "ld");      
      24:         post.setRequestBody(new NameValuePair[]{name,pass});
      25:         int status = client.executeMethod(post);
      26:         System.out.println(post.getResponseBodyAsString());
      27:         post.releaseConnection();  
      28:        
      29:         //查看cookie信息
      30:         CookieSpec cookiespec = CookiePolicy.getDefaultSpec();
      31:         Cookie[] cookies = cookiespec.match(LOGON_SITE, LOGON_PORT, "/", false, client.getState().getCookies());
      32:         if (cookies.length == 0) {
      33:             System.out.println("None");   
      34:         } else {
      35:             for (int i = 0; i < cookies.length; i++) {
      36:                System.out.println(cookies[i].toString());   
      37:             }
      38:         }
      39:         //访问所需的页面main2.jsp
      40:         GetMethod get = new GetMethod("/main2.jsp");
      41:         client.executeMethod(get);
      42:         System.out.println(get.getResponseBodyAsString());
      43:         get.releaseConnection();
      44:      }
      45:  }
    学会勇敢
  • 相关阅读:
    Delphi Stream(流)介绍
    springboot 启动慢分析
    内网穿透NPS
    Docker非root用户使用
    springBoot项目中的log导入,ELK
    基于Addrparser根据经纬度分析所在地区位置
    java ArrayList条件排序
    未完成事项记录
    Python数据挖掘——银行分控模型的建立
    unity ugui的拖拽与放置
  • 原文地址:https://www.cnblogs.com/Sir-Lin/p/4844270.html
Copyright © 2020-2023  润新知