python用httplib模塊發送get和post請求***


在python中,模擬http客戶端發送get和post請求,主要用httplib模塊的功能。

1、python發送GET請求

我在本地建立一個測試環境,python.php的內容就是輸出一句話:

<?php
echo 'python httplib study!'.PHP_EOL;
var_dump($_POST);
?>

python發送get請求代碼:

import httplib

httpClient = None

try:
    httpClient = httplib.HTTPConnection('localhost', 80, timeout=10)
    httpClient.request('GET', '/python.php')

    # response是HTTPResponse對象
    response = httpClient.getresponse()
    print response.status
    print response.reason
    print response.read()
except Exception, e:
    print e
finally:
    if httpClient:
        httpClient.close()

上面代碼中使用了finally來保證即使出錯的時候也能關閉httpClient。運行這個程序,在我的電腦上輸出結果如下:

python用httplib模塊發送get和post請求

2、python發送POST請求

修改python.php內容,打印出$_POST數組:

<?php
echo 'python httplib study!'.PHP_EOL;
var_dump($_POST);
?>

python發起post請求代碼:

#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
import urllib, httplib

httpClient = None
try:
    params = urllib.urlencode({'name': 'waitalone.cn', 'age': '5'})
    headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'}
    httpClient = httplib.HTTPConnection('localhost', 80, timeout=10)
    httpClient.request('POST', '/python.php', params, headers)
    response = httpClient.getresponse()
    print response.status
    print response.reason
    print response.read()
    print response.getheaders()
except Exception, e:
    print e
finally:
    if httpClient:
        httpClient.close()

 

python用httplib模塊發送get和post請求

 

Python3處理HTTP請求

Python3處理HTTP請求的包:http.client,urllib,urllib3,requests
其中,http 比較 low-level,一般不直接使用
urllib更 high-level一點,屬於標准庫。urllib3跟urllib類似,擁有一些重要特性而且易於使用,但是屬於擴展庫,需要安裝
requests 基於urllib3 ,也不是標准庫,但是使用非常方便

# import http.client
# http_client = http.client.HTTPConnection('localhost',8080,timeout=10)
# http_client.request('get','/jenkins/api/json?pretty=true')
# response = http_client.getresponse()
# print(response.status)
# print(response.read())

# import urllib.request
# response = urllib.request.urlopen('http://localhost:8080/jenkins/api/json?pretty=true')
# print(response.status)
# print(response.read())

# import urllib3
# response = urllib3.PoolManager().request('get','http://localhost:8080/jenkins/api/json?pretty=true')
# print(response.status)

# import  requests
# response = requests.get('http://localhost:8080/jenkins/api/json?pretty=true')
# print(response.status_code)
# print(response.text)
# print(response.json())
# print(response.reason)
import requests
from requests.auth import HTTPBasicAuth
response = requests.post('http://localhost:8080/jenkins/job/check_python_version/build',auth=('admin','wangmin'))
print (response.status_code)
print (response.reason)
print(response.headers)

JSON

import urllib.request
import json
   
if __name__ == "__main__":
    restUri = "https://lxxx";
    PostParam = "data=123456"
    DATA = PostParam.encode('utf8')
    req = urllib.request.Request(url = restUri, data=DATA, method='POST')
    req.add_header('Content-type', 'application/x-www-form-urlencoded')
    r = urllib.request.urlopen(req).read()
    print(r.decode('utf8'))
    org_obj = json.loads(r.decode('utf8'))
    print(org_obj['token'])

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM