python實(shí)現(xiàn)的json數(shù)據(jù)以HTTP GET,POST,PUT,DELETE方式頁(yè)面請(qǐng)求
一、JSON簡(jiǎn)介
JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個(gè)子集。JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。二、HTTP的請(qǐng)求方法
HTTP/1.1協(xié)議中共定義了八種方法(有時(shí)也叫“動(dòng)作”)來(lái)表明Request-URI指定的資源的不同操作方式:. OPTIONS - 返回服務(wù)器針對(duì)特定資源所支持的HTTP請(qǐng)求方法。 也可以利用向Web服務(wù)器發(fā)送'*'的請(qǐng)求來(lái)測(cè)試服務(wù)器的功能性。. HEAD - 向服務(wù)器索要與GET請(qǐng)求相一致的響應(yīng),只不過(guò)響應(yīng)體將不會(huì)被返回。 這一方法可以在不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息。. GET - 向特定的資源發(fā)出請(qǐng)求。 注意:GET方法不應(yīng)當(dāng)被用于產(chǎn)生“副作用”的操作中,例如在web app.中。 其中一個(gè)原因是GET可能會(huì)被網(wǎng)絡(luò)蜘蛛等隨意訪問(wèn)。. POST - 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。 數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。. PUT - 向指定資源位置上傳其最新內(nèi)容。. DELETE - 請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。. TRACE - 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。. CONNECT - HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。. PATCH - 用來(lái)將局部修改應(yīng)用于某一資源,添加于規(guī)范RFC5789。其中,GET,POST, PUT, DELETE常用于RESTful API的實(shí)現(xiàn),所以下面做的代碼實(shí)現(xiàn)三、Python實(shí)現(xiàn)的json數(shù)據(jù)以HTTP GET,POST,PUT,DELETE方式進(jìn)行頁(yè)面請(qǐng)求
閑言少述,直接上代碼.1. GET方法
#!/usr/bin/env python# -*- coding:utf-8 -*-# File: http_get.pyimport urllib2def http_get(): url='http://192.168.1.13:9999/test' #頁(yè)面的地址 response = urllib2.urlopen(url) #調(diào)用urllib2向服務(wù)器發(fā)送get請(qǐng)求 return response.read() #獲取服務(wù)器返回的頁(yè)面信息 ret = http_get()print("RET %r" % (ret))2. POST方法
#!/usr/bin/env python# -*- coding:utf-8 -*-# File http_post.pyimport urllibimport urllib2import json def http_post(): url='http://192.168.1.13:9999/test' values ={'user':'Smith','passwd':'123456} jdata = json.dumps(values) # 對(duì)數(shù)據(jù)進(jìn)行JSON格式化編碼 req = urllib2.Request(url, jdata) # 生成頁(yè)面請(qǐng)求的完整數(shù)據(jù) response = urllib2.urlopen(req) # 發(fā)送頁(yè)面請(qǐng)求 return response.read() # 獲取服務(wù)器返回的頁(yè)面信息resp = http_post()print resp3. PUT方法
#!/usr/bin/env python# -*- coding:utf-8 -*-# File: http_put.pyimport urllib2import jsondef http_put(): url='http://192.168.1.13:9999/test' values={'':''} jdata = json.dumps(values) # 對(duì)數(shù)據(jù)進(jìn)行JSON格式化編碼 request = urllib2.Request(url, jdata) request.add_header('Content-Type', 'your/conntenttype') request.get_method = lambda:'PUT' # 設(shè)置HTTP的訪問(wèn)方式 request = urllib2.urlopen(request) return request.read()resp = http_put()print resp4. DELETE方法
#!/usr/bin/env python# -*- coding:utf-8 -*-# File: http_delete.pyimport urllib2import jsondef http_delete(): url='http://192.168.1.13:9999/test' values={'user':'Smith'} jdata = json.dumps(values) request = urllib2.Request(url, jdata) request.add_header('Content-Type', 'your/conntenttype') request.get_method = lambda:'DELETE' # 設(shè)置HTTP的訪問(wèn)方式 request = urllib2.urlopen(request) return request.read()resp = http_delete()print resp
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。