我目前正在用Python編寫一個腳本,它允許從連接的設備上聆聽串行端口,以便在通過門時猜測一個人的身高。 最後的想法是通過http請求將此信息發送給Piwik,一個網絡分析包。 的代碼如下:爲什麼我的Python請求沒有被服務器註冊?
import serial, httplib, uuid
arduino = serial.Serial('/dev/ttyACM0', 9600)
while True:
data = arduino.readline()
print data
conn = httplib.HTTPConnection("my-domain.com")
conn.request("HEAD","/piwik/piwik.php?idsite=1&rec=1&action_name=Entree-magasin&uid="+str(uuid.uuid4())+"&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+"")
print conn.request
時,我只問打印以下行:
"/piwik/piwik.php?idsite=1&rec=1&action_name=Entree-magasin&uid="+str(uuid.uuid4())+"&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+""
它工作正常。但是如果我查看託管我的網站的服務器的日誌,則不會發送請求。 如果我刪除以下部分"&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+"
,那麼它工作正常,併發送請求。 如果我留下以下部分&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+"
並用數字硬編碼下面的值+str(data)+
,那麼請求也被髮送。
我真的沒有問題的地方。如果任何人都可以提供幫助,那會很棒。
在閱讀完你的答案並繼續努力之後,我找到了一種通過使用請求函數來優化我的代碼的方法,但結果仍然相同,我無法在我的請求中獲得str(data)值:
import serial, requests, uuid arduino = serial.Serial('/dev/ttyACM0', 9600) while True: data = arduino.readline() print data r = requests.get('http://my-domain.com/piwik/piwik.php?idsite=1&rec=1&action_name=Entree-magasin&uid='+str(uuid.uuid4())+'&e_c=entree-magasin&e_a=passage&e_n=taille&e_v='+str(data)+'') print r
看起來它依賴於將'data'轉換爲字符串。什麼是數據?結果字符串可以與其他字符串連接嗎? – wiseveri
數據是一個介於205和100之間的範圍數字。 – Nanor