zoukankan      html  css  js  c++  java
  • [转载]利用ruby的Net::HTTP发起http请求并对返回包进行简单的校验

    一、先上一段代码:
    #encoding = utf-8   
    require 'net/http'  
      
    Net::HTTP.start('tuan.qq.com', 80) {|http|   
        response = http.get('/')           #获取返回包所有信息   
        #response = http.head('/')         #仅仅获取返回头信息   
        head_hash = response.to_hash   
        head_hash.keys.each {|key|    
            p key.to_s + ':' + head_hash[key].to_s   
        }   
    }  

    #encoding = utf-8  require 'net/http'    Net::HTTP.start('tuan.qq.com', 80) {|http|      response = http.get('/')           #获取返回包所有信息      #response = http.head('/')         #仅仅获取返回头信息      head_hash = response.to_hash      head_hash.keys.each {|key|           p key.to_s + ':' + head_hash[key].to_s      }  }

    对于上面的代码:
    start方法指定了访问的host和端口
    get后面指定的参数即为CGI去除host的部分,返回response的hash
    head方法是仅仅获取response返回头信息

    运行上面的代码,我们可以得到如下结果:


    "vary:Accept-Encoding"  
    "server:Apache"  
    "connection:close"  
    "date:Thu, 07 Jun 2012 08:05:46 GMT"  
    "cache-control:max-age=0"  
    "content-type:text/html"  
    "transfer-encoding:chunked"  
    "expires:Thu, 07 Jun 2012 08:05:46 GMT"  
    "set-cookie:vip_city_tuan_city=deleted; expires=Wed......  

    "vary:Accept-Encoding"  "server:Apache"  "connection:close"  "date:Thu, 07 Jun 2012 08:05:46 GMT"  "cache-control:max-age=0"  "content-type:text/html"  "transfer-encoding:chunked"  "expires:Thu, 07 Jun 2012 08:05:46 GMT"  "set-cookie:vip_city_tuan_city=deleted; expires=Wed......

    这就是返回包的头信息!因为这个response是一个hash,所以我们可以获取里面每一项的信息,如下:


    p response['server']         #  Apache   
    p response['content-type']   #  text/html  

    p response['server']         #  Apache  p response['content-type']   #  text/html

    二、也可以通过以下方法,不指定host,直接利用url发送请求,获取返回包


    response = Net::HTTP.get_response(URI('http://tuan.qq.com'))  

    response = Net::HTTP.get_response(URI('http://tuan.qq.com'))

    获取response的状态信息: 


    response = Net::HTTP.get_response(URI('http://www.baidu.com'))   
    p response.code             #"200"   
    p response.content_length   #8023   
    p response.message          #"OK"   
    p response.body             #获取body信息        
    #"<!doctype html><html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\"><title>\260\331\266\310\3..."  

    response = Net::HTTP.get_response(URI('http://www.baidu.com'))  p response.code             #"200"  p response.content_length   #8023  p response.message          #"OK"  p response.body             #获取body信息       #"<!doctype html><html><head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=gb2312\"><title>\260\331\266\310\3..."

    利用上面的几个简单方法,就可以实现简单的cgi自动化!

    也可以批量扫描页面链接,检查其状态!

  • 相关阅读:
    54. 八皇后问题[eight queens puzzle]
    53. 特殊的O(n)时间排序[sort ages with hashtable]
    52. 不用+、-、×、÷做加法[add two numbers without arithmetic]
    C++基础知识面试精选100题系列(11-20题)[C++ basics]
    C++基础知识面试精选100题系列(1-10题)[C++ basics]
    洛谷 P1479 宿舍里的故事之五子棋
    洛谷 P2084 进制转换
    codevs 1700 施工方案第二季
    POJ 3278 Catch That Cow(求助大佬)
    POJ 2251 Dungeon Master
  • 原文地址:https://www.cnblogs.com/zhangfei/p/2590375.html
Copyright © 2011-2022 走看看