pretty code

2017年9月7日 星期四

UEFI Application - Python httplib

原本以為 UEFI 裡的 Python 沒有包含 httplib
無聊鑽進 Lib 資料夾後,居然發現有 "httplib.py"
當然二話不說的跑去 UEFI Shell 下試用

一開始出現了 array 模組不存在的錯誤
在陸續打開了 "_md5", "_sha", "_sha256", "_sha512" 模組後
("socket" 之前就打開了)
終於順利的執行測試程式

另外,如果網址不是 IP 形式
記得設定 EFI\Stdlib\etc\resolv.conf
隨便加入 1 個 DNS Server
我這裡是使用 google DNS Server "8.8.8.8"

底下是測試程式的範例
import httplib

conn = httplib.HTTPConnection("www.example.com")

conn.request("GET", "/")

res = conn.getresponse()

print res.status, res.reason

data = res.read()

print data

conn.close()


有圖有真相

4 則留言:

Leo 提到...

Hi Sir,

我執行會出現 error

socket.gaierror: [Errno 7] getaddrinfo failed

想請問你 DNS 設定有其他東西要設嗎?
我用 DHCP 和 設成 8.8.8.8 都沒效
google 到的都說是 DNS 的問題

tylpk 提到...

Hi Leo,

如果懷疑是 DNS 的問題,也許可以先用 IP 來測試
我的 DNS 就是如同我文章的設定

另外,如果不使用 Python,使用 Shell command 可以取得 IP 嗎?

Leo 提到...

Hi Tylpk,

我有用 IP 測過了, 是沒問題的
在Shell 下 有抓到 IP

我目前是在 Python 中用網址就是失敗

tylpk 提到...

Hi Leo,

我的意思是 conn = httplib.HTTPConnection("www.example.com")
裡面不要寫網址形式,找一個你知道網址的 ip

conn = httplib.HTTPConnection("xxx.xxxx.xxx.xxxx")

這樣比較好確認是 DNS or python code 的問題