为什么我的Python请求未被服务器注册?

时间:2015-07-28 09:26:46

标签: python httprequest matomo

我目前正在用Python编写一个脚本,它允许从连接的设备中侦听串口,以便在通过门时猜测人的身高。 最后的想法是通过http请求将此信息发送到Piwik,这是一个网络分析包。 代码如下:

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(数据)值:< / p>

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

2 个答案:

答案 0 :(得分:0)

尝试以下代码,参数不是标题

的一部分
resp, content = h.request("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), "GET")

答案 1 :(得分:0)

我想我明白了。我尝试使用Google Analytics而不是Piwik做同样的事情。它适用于谷歌分析,str(数据)在系统内正常运行,但由于某种原因,它不适用于Piwik :(