Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产成人精品影视,老司机精品99在线播放,国产综合精品久久亚洲

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          python接口自動(dòng)化(八)-發(fā)送post請求的接口

          python接口自動(dòng)化(八)-發(fā)送post請求的接口(詳解)

            上篇介紹完發(fā)送get請求的接口,大家必然聯(lián)想到發(fā)送post請求的接口也不會(huì)太難,被聰明的你又猜到了。答案是對(duì)的,雖然發(fā)送post請求的參考例子很簡單,但是實(shí)際遇到的情況卻是很復(fù)雜的,因?yàn)樗邢到y(tǒng)或者軟件、網(wǎng)站都是從登錄開

          始的,進(jìn)入這扇門才可以發(fā)現(xiàn)里邊的奧秘,所以首先介紹的第一個(gè)post請求肯定是登錄了,但登錄是最難處理的。如果把登錄問題這只攔路虎解決了,那么后面問題都迎刃而解。

          help函數(shù)

            上篇介紹發(fā)送get請求的接口時(shí),學(xué)習(xí)requests模塊,是讓大家去訪問官方網(wǎng)站,查看官方文檔;其實(shí)學(xué)習(xí)一個(gè)新的模塊捷徑,不用去百度什么的,直接用 help 函數(shù)就能查看相關(guān)注釋和案例內(nèi)容。

          python發(fā)送get請求接口案例:

          發(fā)送post的請求參考例子很簡單,實(shí)際遇到的情況卻是很復(fù)雜的,首先第一個(gè)post請求肯定是登錄了,但登錄是最難處理的。登錄問題解決了,后面都簡單了。


          一、查看官方文檔

          1.學(xué)習(xí)一個(gè)新的模塊,其實(shí)不用去百度什么的,直接用help函數(shù)就能查看相關(guān)注釋和案例內(nèi)容。

          >>import requests

          >>help(requests)

          2.查看python發(fā)送get和post請求的案例

          >>> import requests

          >>> r=requests.get('https://www.python.org')

          >>> r.status_code

          200

          >>> 'Python is a programming language' in r.content

          True

          ... or POST:

          >>> payload=dict(key1='value1', key2='value2')

          >>> r=requests.post('http://httpbin.org/post', data=payload)

          >>> print(r.text)

          {

          ...

          "form": {

          "key2": "value2",

          "key1": "value1"

          },

          ...

          }


          二、發(fā)送post請求

          1.用上面給的案例,做個(gè)簡單修改,發(fā)個(gè)post請求

          2. payload參數(shù)是字典類型,傳到如下圖的form里


          三、json

          1.post的body是json類型,也可以用json參數(shù)傳入。

          2.先導(dǎo)入json模塊,用dumps方法轉(zhuǎn)化成json格式。

          3. 返回結(jié)果,傳到data里

          四、headers

          1.以禪道登錄為例,模擬登陸,這里需添加請求頭headers,可以用fiddler抓包


          2.將請求頭寫成字典格式

          headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",

          "Accept": "application/json, text/javascript, */*; q=0.01",

          "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",

          "Accept-Encoding": "gzip, deflate, br",

          "Content-Type": "application/json; charset=utf-8",

          "X-Requested-With": "XMLHttpRequest",

          "Cookie": "xxx.............", # 此處cookie省略了

          "Connection": "keep-alive"

          }


          五、禪道登錄參考代碼

          # coding:utf-8

          # coding:utf-8

          import requests

          # 禪道host地址

          host="http://127.0.0.1"

          def login(s,username,psw):

          url=host+"/zentao/user-login.html"

          h={

          "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",

          "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

          "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",

          "Accept-Encoding": "gzip, deflate",

          "Referer": host+"/zentao/user-login.html",

          # "Cookie": # 頭部沒登錄前不用傳cookie,因?yàn)檫@里cookie就是保持登錄的

          "Connection": "keep-alive",

          "Content-Type": "application/x-www-form-urlencoded",

          }

          body1={"account": username,

          "password": psw,

          "keepLogin[]": "on",

          "referer": host+"/zentao/my/"

          }

          # s=requests.session() 不要寫死session

          r1=s.post(url, data=body1, headers=h)

          # return r1.content # python2的return這個(gè)

          return r1.content.decode("utf-8") # python3

          def is_login_sucess(res):

          if "登錄失敗,請檢查您的用戶名或密碼是否填寫正確。" in res:

          return False

          elif "parent.location=" in res:

          return True

          else:

          return False

          if __name__=="__main__":

          s=requests.session()

          a=login(s, "admin", "e10adc3949ba59abbe56e057f20f883e")

          result=is_login_sucess(a)

          print("測試結(jié)果:%s"%result)

          micropython 教程的目的是解釋如何使用 micropython 和 urequests 庫執(zhí)行 http post 請求。這在esp32和esp8266上都進(jìn)行了測試。

          簡介

          本MicroPython教程旨在闡釋如何借助MicroPython和urequests庫(https://github.com/micropython/micropython-lib/blob/master/urequests/urequests.py)執(zhí)行HTTP POST請求。本教程在esp32和ESP8266上均進(jìn)行了測試。下文打印結(jié)果均出自ESP8266上的測試。

          我們將把HTTP POST請求發(fā)送至一個(gè)假的在線測試REST API。該網(wǎng)站主頁:http://jsonplaceholder.typicode.com/。其支持多條路徑,而本教程將使用其中的/posts路徑。但請注意,該路徑名稱與我們將要使用的POST方法互不相干。在此示例中,一條post對(duì)應(yīng)一個(gè)表示用戶寫的(如在網(wǎng)站中)post的虛擬對(duì)象。另一方面,POST是我們將要使用的HTTP方法。

          當(dāng)然,為適用本教程,設(shè)備需事先連網(wǎng),這樣它才能夠發(fā)送HTTP請求。請參閱這篇之前的帖子:ESP32 MicroPython教程:連接Wi-Fi網(wǎng)絡(luò),了解如何將運(yùn)行MicroPython的設(shè)備連接到WiFi網(wǎng)絡(luò)。如果你想讓設(shè)備在啟動(dòng)后自動(dòng)建立連接,請查看另一篇帖子:ESP32 / ESP8266 MicroPython教程:自動(dòng)連接WiFi。在此示例中,我將MicroPython設(shè)置為設(shè)備啟動(dòng)后自動(dòng)連接WiFi網(wǎng)絡(luò)。

          重要提示:本文撰寫之際,所用的MicroPython版本默認(rèn)包含urequests模塊。因此,直接導(dǎo)入該模塊即可,無需執(zhí)行其他操作。但請注意,此情況或有變化,MicroPython新出版本的默認(rèn)配置可能不再包含該模塊,你需要另行配置。

          代碼

          我們首先要做的是導(dǎo)入urequests模塊,以獲取執(zhí)行HTTP POST請求所需的函數(shù)。

          1 import urequests
          

          然后通過調(diào)用urequests模塊的post函數(shù)(https://github.com/micropython/micropython-lib/blob/master/urequests/urequests.py#L103)發(fā)送請求。此函數(shù)以我們要發(fā)送HTTP post請求的URL作為輸入值。其還可接收鍵-參數(shù)列形式的其他參數(shù),因?yàn)閺脑摵瘮?shù)的定義即可看出,其在原型中定義了**kw參數(shù)。你可以通過這篇寫得非常好的文章(https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/)了解更多關(guān)于**kwargs的信息。

          由于post函數(shù)是在其函數(shù)體部分調(diào)用request函數(shù)(https://github.com/micropython/micropython-lib/blob/master/urequests/urequests.py#L33),因此我們可以確認(rèn)數(shù)據(jù)參數(shù)是我們能夠傳遞的額外參數(shù)之一。這對(duì)應(yīng)HTTP POST請求的函數(shù)體。

          由于這只是一個(gè)展示如何使用該函數(shù)的簡單示例,因此我們將只發(fā)送一個(gè)數(shù)據(jù)字符串作為函數(shù)體且不指定任何特定內(nèi)容類型。當(dāng)然,在實(shí)際情況下,我們還是希望能夠指定內(nèi)容類型并遵守其應(yīng)用于請求體的格式。

          請注意,該URL對(duì)應(yīng)簡介中提到的虛擬在線REST API網(wǎng)站的/posts路徑。

          1 response=urequests.post("http://jsonplaceholder.typicode.com/posts", data="some dummy content")
          

          請注意,此函數(shù)調(diào)用將返回一個(gè)Response類(https://github.com/micropython/micropython-lib/blob/master/urequests/urequests.py#L3)的對(duì)象,我們將其存儲(chǔ)在變量中,以便稍后處理HTTP請求的結(jié)果。

          圖1展示了使用Postman函數(shù)(https://www.getpostman.com/apps)執(zhí)行同一POST請求得到的結(jié)果。如圖所示,我們將收到一個(gè)指示新來源已成功創(chuàng)建(ID為101的post對(duì)象)的響應(yīng),該響應(yīng)與我們的請求內(nèi)容無關(guān)。

          即使我們繼續(xù)發(fā)送請求,響應(yīng)仍將保持不變,因?yàn)槲覀兠鎸?duì)的是假的測試API。這就是指定內(nèi)容類型或請求體非常有意義但我們無需費(fèi)心進(jìn)行此操作的原因。

          欲了解如何使用Postman發(fā)送HTTP POST請求。



          圖1 – 使用Postman發(fā)送HTTP POST請求的輸出結(jié)果。

          最后,在MicroPython中獲取請求的響應(yīng)內(nèi)容,為此只需訪問Response對(duì)象的text屬性即可。由于響應(yīng)類型為JSON,因此我們還可以視其為內(nèi)容已解析的字典對(duì)象,通過Response對(duì)象(其在實(shí)現(xiàn)中使用ujson庫)的json函數(shù)檢索該響應(yīng)。

          1 print(response.text)
          2 print(response.json())
          

          本教程所有命令的結(jié)果如圖2所示。可以從中看出,我們獲取的原始響應(yīng)既可以是字符串格式,也可以是已解析的JSON對(duì)象。



          圖2 – 使用MicroPython發(fā)送HTTP POST請求的結(jié)果。

          注:本文作者是Nuno Santos,他是一位和藹可親的電子和計(jì)算機(jī)工程師,住在葡萄牙里斯本 (Lisbon)。

          查看更多ESP32/ESP8266教程和項(xiàng)目,請點(diǎn)擊 :

          ESP32教程大全:http://mc.dfrobot.com.cn/forum.php?mod=viewthread&tid=271930

          ESP32 tutorial:https://www.dfrobot.com/blog-964.html


          主站蜘蛛池模板: 亚洲一区二区在线免费观看| 日韩精品无码免费一区二区三区 | 精品国产日韩一区三区| 日本福利一区二区| 老熟妇仑乱视频一区二区 | 国产成人久久精品麻豆一区| 国产精品一级香蕉一区| 久久国产精品一区二区| 国产91一区二区在线播放不卡 | 国产精品免费大片一区二区| 亚洲码欧美码一区二区三区| 日韩爆乳一区二区无码| 久久国产免费一区| 亚洲国产成人一区二区三区| 中文字幕一区精品| 国产成人无码AV一区二区| 国产精品一区二区av不卡| 一区二区三区国模大胆| 日韩毛片一区视频免费| 成人丝袜激情一区二区| 熟女少妇丰满一区二区| 一区二区三区在线播放| 一区二区三区视频在线观看| 国产产一区二区三区久久毛片国语 | 亚洲美女视频一区| 日本一区视频在线播放| 国产一区二区三区日韩精品| 久久精品无码一区二区三区不卡| 人妻激情偷乱视频一区二区三区| 亚洲国产精品一区第二页 | 中文字幕在线精品视频入口一区| 国产一区二区免费在线| 痴汉中文字幕视频一区| 精品3d动漫视频一区在线观看| 国产成人一区二区三区精品久久| 韩国女主播一区二区| 综合激情区视频一区视频二区| 福利一区二区三区视频午夜观看| 精品福利一区3d动漫| 久久久91精品国产一区二区三区| 亚洲福利电影一区二区?|