python通過get方式,post方式傳送http請求和接收http響應-urllib urllib2
測試用CGI,名字為test.py,放在apache的cgi-bin目錄下:
#!/usr/bin/python
import cgi
def main():
print "Content-type: text/html\n"
form = cgi.FieldStorage()
if form.has_key("ServiceCode") and form["ServiceCode"].value != "":
print "<h1> Hello",form["ServiceCode"].value,"</h1>"
else:
print "<h1> Error! Please enter first name.</h1>"
main()
python傳送post和get請求
get請求:
使用get方式時,請求資料直接放在url中。
方法一、
import urllib
import urllib2
req = urllib2.Request(url)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
import httplib
conn = httplib.HTTPConnection("192.168.81.16")
conn.request(method="GET",url=url)
response = conn.getresponse()
res= response.read()
print res
post請求:
使用post方式時,資料放在data或者body中,不能放在url中,放在url中將被忽略。
方法一、
import urllib
import urllib2
test_data = {'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode = urllib.urlencode(test_data)
req = urllib2.Request(url = requrl,data =test_data_urlencode)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
import urllib
import httplib
test_data = {'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode = urllib.urlencode(test_data)
conn = httplib.HTTPConnection("192.168.81.16")
conn.request(method="POST",url=requrl,body=test_data_urlencode,headers = headerdata)
response = conn.getresponse()
res= response.read()
print res
對python中json的使用不清楚,所以臨時使用了urllib.urlencode(test_data)方法;
模組urllib,urllib2,httplib的區別
httplib實現了http和https的客戶端協議,但是在python中,模組urllib和urllib2對httplib進行了更上層的封裝。
介紹下例子中用到的函式:
1、HTTPConnection函式
httplib.HTTPConnection(host[,port[,stict[,timeout]]])
這個是建構函式,表示一次與伺服器之間的互動,即請求/響應
host 標識伺服器主機(伺服器IP或域名)
port 預設值是80
strict 模式是False,表示無法解析伺服器返回的狀態行時,是否丟擲BadStatusLine異常
例如:
conn = httplib.HTTPConnection("192.168.81.16",80) 與伺服器建立連結。
2、HTTPConnection.request(method,url[,body[,header]])函式
這個是向伺服器傳送請求
method 請求的方式,一般是post或者get,
例如:
method="POST"或method="Get"
url 請求的資源,請求的資源(頁面或者CGI,我們這裡是CGI)
例如:
或者
url="http://192.168.81.16/python_test/test.html" 請求頁面
body 需要提交到伺服器的資料,可以用json,也可以用上面的格式,json需要呼叫json模組
headers 請求的http頭headerdata = {"Host":"192.168.81.16"}
例如:
test_data = {'ServiceCode':'aaaa','b':'bbbbb'}
test_data_urlencode = urllib.urlencode(test_data)
requrl = "http://192.168.81.16/cgi-bin/python_test/test.py"
headerdata = {"Host":"192.168.81.16"}
conn = httplib.HTTPConnection("192.168.81.16",80)
conn.request(method="POST",url=requrl,body=test_data_urlencode,headers = headerdata)
conn在使用完畢後,應該關閉,conn.close()
3、HTTPConnection.getresponse()函式
這個是獲取http響應,返回的物件是HTTPResponse的例項。
4、HTTPResponse介紹:
HTTPResponse的屬性如下:
read([amt]) 獲取響應訊息體,amt表示從響應流中讀取指定位元組的資料,沒有指定時,將全部資料讀出;
getheader(name[,default]) 獲得響應的header,name是表示頭域名,在沒有頭域名的時候,default用來指定返回值
getheaders() 以列表的形式獲得header
例如:
date=response.getheader('date');
print date
resheader=''
resheader=response.getheaders();
print resheader
列形式的響應頭部資訊:
[('content-length', '295'), ('accept-ranges', 'bytes'), ('server', 'Apache'), ('last-modified', 'Sat, 31 Mar 2012 10:07:02 GMT'), ('connection', 'close'), ('etag', '"e8744-127-4bc871e4fdd80"'), ('date', 'Mon, 03 Sep 2012 10:01:47 GMT'), ('content-type', 'text/html')]
date=response.getheader('date');
print date
取出響應頭部的date的值。
相關推薦
python通過get方式,post方式傳送http請求和接收http響應-urllib urllib2
測試用CGI,名字為test.py,放在apache的cgi-bin目錄下: #!/usr/bin/python import cgi def main(): print "Content-type: text/html\n" form = cgi.FieldStorage() i
python通過get方式,post方式,delete,put傳送http請求和接收http響應
測試用CGI,名字為test.py,放在apache的cgi-bin目錄下: #!/usr/bin/Python import cgi def main(): print "Content-type: text/html\n" form
Unity3D 通過Get與Post方式與伺服器端進行互動
<p style="padding-top: 10px; padding-bottom: 10px; margin-top: 0px; margin-bottom: 0px; line-height: 25px; color: rgb(51, 51, 51); fon
HTTP 請求的 GET 與 POST 方式的區別
瀏覽器 tro 名稱 安全 data 回文 部分 strong 長度 HTTP 請求的 GET 與 POST 方式的區別 在客戶機和服務器之間進行請求-響應時,兩種最常被用到的方法是:GET 和 POST。 GET - 從指定的資源請求數據。 POST - 向指定的資源提
HTTP請求的GET與POST 方式的區別
Http 定義了與伺服器互動的不同方法,最基本的方法有 4 種,分別是 GET,POST,PUT,DELETE。 URL 全稱是資源描述符,我們可以這樣認為:一個 URL 地址,它用於描述一個網路上的資源,而 HTTP 中的 GET,POST,PUT,DELETE 就對應著
PHP:CURL分別以GET、POST方式請求HTTPS協議接口api
json格式 gen useragent pin php curl 檢查 協議 處理 訪問 1、curl以GET方式請求https協議接口 //註意:這裏的$url已經包含參數了,不帶參數你自己處理哦GET很簡單 function curl_get_https($url
Volley的Get、Post方式(JsonObjectRequest、StringRequest)以及Volley獲取圖片的3種方式
volley use utf-8 設置 ica static toast 隊列 getheight activity_main.xml 裏面什麽也沒有 AndroidManifest.xml(重點是android:name="com.example.vo
Ajax案例-基於HTML,以GET或POST方式,檢查註冊使用者名稱是否在資料庫中已存在
08_register.jsp <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html&
python通過定製路徑的方式解析介面返回資料
該問題基於http://stackoverflow.com/questions/7320319/xpath-like-query-for-nested-python-dictionaries的討論,原始碼來自於pyresttest的實現。 問題:在做介面測試時,經常需要檢查
Laravel通過ajax的POST方式傳值並實現頁面跳轉
1.新增測試按鈕 <button class='test' >ajax測試</button> 2.ajax部分程式碼 @section('js') <scr
PHP:CURL分別以GET、POST方式請求HTTPS協議介面api
1、curl以GET方式請求https協議介面 //注意:這裡的$url已經包含引數了,不帶引數你自己處理哦GET很簡單 function curl_get_https($url){ $curl = curl_init(); // 啟動一個CURL會話 curl_setopt($cu
通過Ajax的post方式前端引數傳到後端與URLEncoder與URLDecoder編解碼問題
Ajax傳遞大量引數的時候是是以url的形式傳遞到後端的,即在url後面拼接問號加引數的格式拼成向後端訪問的引數。 在把請求引數給ajax之前一般會進行序列化: 例如var param = $('.q
用IO流方法get、post 方式提交
get方式提交 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import j
C# 通過Get、Post、Soap呼叫WebService的方法
原文: http://www.cnblogs.com/zuowj/p/4267585.html 由於需求需要 居然用到了soap請求 第一次用啊 用谷歌 百度找了很久 最後找到這個大神的 還不錯 分享之using System; using System.Web; usin
Python 通過連線qq郵箱伺服器傳送郵件
python的smtplib提供了一種很方便的途徑傳送電子郵件。它對smtp協議進行了簡單的封裝。 傳送郵件主要用到了smtplib 和 email 程式碼非常簡單,上程式碼: import smtplib from email.mime.text import MIME
在HTML中用js獲取通過GET、POST方法(就是在網址後加?a=b&c=d之類)傳過來的表單值
<script type="text/javascript"> //獲取指定form中的所有的<input>物件 function getElements(formId) { var form = document.
AFNetworking PUT、DELETE、GET、POST封裝方法設定請求頭
1、GET + (void)requestGETSuperAPIWithURLStr:(NSString *)urlStr WithAuthorization:(NSString *)authorization paramDic:(NSDictionary *)paramD
axios的使用方法--即GET、POST、 OPTION 、請求攔截的使用
axios的使用方法–即GET、POST、 OPTION 、請求攔截的使用 axios怎樣在全域性使用 get傳遞引數和傳遞token post傳遞引數和token option的使用 *攔截器的使用 axios怎樣在全域性使用 0
JAVA傳送http請求,呼叫http介面與方法
1.傳送POST請求,無引數名呼叫。 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import
Java socket模擬傳送和接收HTTP訊息
理解:模擬登陸指定網站,登陸成功後,獲取返回串中的cookie值用於發起下次請求。 package demo.http.client; import java.io.IOException; import java.io.InputStream; import java.