zoukankan      html  css  js  c++  java
  • httplib和urllib2常用方法

      都是几年前用过的,现在翻出来记录一下。

    import httplib
    import urllib2
    import socket
    
    ##--------------------------------------------------------用httplib进行GET请求
    conn=httplib.HTTPConnection('172.22.31.40',8080)##如果要走代理,那这里自然要改为代理服务器的地址
    conn.request("GET","/cloud/index.php")
    result=conn.getresponse()
    print result.read()
    resultStatus=result.status
    print resultStatus
    conn.close()
    
    conn=httplib.HTTPConnection('www.cnblogs.com',80)
    conn.request("GET","/idbeta/default.html")
    result=conn.getresponse()
    print result.read()
    resultStatus=result.status
    print resultStatus
    conn.close()
    
    ##--------------------------------------------------------用httplib进行POST请求
    conn=httplib.HTTPConnection('172.22.131.40',80)
    ##一般重点关注真实包的"Content-type",例如"application/x-www-form-urlencoded"等;而data则根据真实抓包情况来模拟,需要url编码的用urllib.urlencode
    header1 = {"Content-type": "application/x-www-form-urlencoded", "User-Agent" : "test"} 
    data1 = '''{
       "audit_control_list" : [],
       "ws" : [
          "base_setting",
       ],
       "xp_fix" : []
    } '''
    url1='/api/getconf.json?mid=ebcd32d5f68e404db1ccc8ff2dacb360&ver=1.0'
    conn.request('POST',url1,body=data1,headers=header1)
    result=conn.getresponse()
    content=result.read()
    print content
    conn.close()
    
    ##发送multipart/form-data请求的例子
    conn=httplib.HTTPConnection('172.22.131.40',80)
    header2={"Content-Type":"multipart/form-data; boundary=----------------------------2bb6caed7d98"}
    data2 = '''------------------------------2bb6caed7d98
    Content-Disposition: form-data; name="em"
    md5s=92f44e405db16ac55d97e3bfe3b132fa+04c5d2b4da9a0f3fa8a45702d4256cee42d8c48d	452608	WINDOWSsyswow64windowspowershellv1.0powershell.exe	1	
    dcca4b04af87e52ef9eaa2190e06cbac+12a602b86fc394b1c88348fb099685eabb876495	1174016	PROGRAM FILESwindows sidebarsidebar.exe	1	
    ------------------------------2bb6caed7d98--
    '''
    url2='/cloudquery.php'
    conn.request("POST",url2,body=data2,headers=header2)
    result=conn.getresponse()
    resultStatus=result.status
    ##获取请求的页面内容
    content=result.read()
    print content
    print result.status,result.reason
    ##关闭连接
    conn.close()
    
    ##--------------------------------------------------------用urllib2进行GET请求
    ##直接open就是GET
    url="http://www.cnblogs.com/idbeta/default.html"
    response =urllib2.urlopen(url)
    print response.read()
    ##--------------------------------------------------------用urllib2进行POST请求 url="http://172.22.131.40/api/getconf.json?mid=ebcd32d5f68e404db1ccc8ff2dacb360&ver=1.0" header1 = {"Content-type": "application/x-www-form-urlencoded", "User-Agent" : "test"} data1 = '''{ "audit_control_list" : [], "base_config" : [], "data_linkage" : [], "md" : [], "nac_linkage" : [], "neteye" : [], "p2p_setting" : [], "safe_control_list" : [], "sd" : [ "sd_settings", "rp_settings" ], "ui" : [], "ws" : [ "base_setting", "popwnd_setting", "startup_assistant", "safe_protect", "leak_repair" ], "xp_fix" : [] } ''' req = urllib2.Request(url, data1, header1) # 发送请求同时传data表单,这个是字典方式 response = urllib2.urlopen(req) #接受反馈的信息 the_page = response.read() #读取反馈的内容 print the_page ##--------------------------------------------------------urllib2设置超时时间 ##方法一 全局设置 socket.setdefaulttimeout(1);秒 ##或 urllib2.socket.setdefaulttimeout(1) ##方法二 urllib2.urlopen加入timeout参数 urllib2.urlopen(url,timeout=1) ##--------------------------------------------------------urllib2设置代理 proxy = urllib2.ProxyHandler({"http" : 'http://172.22.31.85:808'}) urllib2.install_opener(urllib2.build_opener(proxy)) url="http://www.cnblogs.com/idbeta/default.html" response =urllib2.urlopen(url) print response.read()

      除了上面所说的,还有httplib2、pycurl、requests等等都是和http相关的,用法大同小异,大家去各自官网看介绍就可以了,可见python的第三方库实在有点太多了啊。

  • 相关阅读:
    MYSQL—— 基础入门,增、删、改、查(基础篇)
    作为测试你不可不知的iOS与Android差异点!
    MYSQL—— Insert的几种用法!
    mysql 使用Navicat Lite如何打开‘查询编辑器’,使用sql语句对表进行操作!
    mysql基础总结
    C#中的DllImport
    StructLayout特性
    c++中指针类型在c#中怎么对应?
    c++/java/c# 几种编程语言的指针、引用比较
    如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
  • 原文地址:https://www.cnblogs.com/idbeta/p/5098400.html
Copyright © 2011-2022 走看看