我是python的新手,我有任务所以我需要扫描wifi并将数据发送到服务器,下面是我必须发送的格式,这在手动输入浏览器URL文本框时工作正常,
http://223.56.124.58:8080/ppod-web/ProcessRawData?data={"userId":"2220081127-14","timestamp":"2010-04-12 10:54:24","wifi":{"ssid":"guest","rssi":"80"}}
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import httplib
import urllib
params = urllib.urlencode('{\"userId\":\"20081127-14\",\"timestamp\":\"2010-04-12 10:54:24\",\"wifi\":{\"ssid\":\"guest\",\"rssi\":\"80\"}}')
headers = {"Content-type":"application/x-www-form-urlencoded","Accept":"text/plain"}
conn = httplib.HTTPConnection("http://223.56.124.58:8080")
conn.request("POST","ppod-web/ProcessRawData?data=",params,headers)
response = conn.getresponse()
print response.status
print "-----"
print response.reason
data = response.read()
print data
conn.close()
Run Code Online (Sandbox Code Playgroud)
谢谢
bad*_*adp 10
最有可能的问题是,您在问题中发布的脚本问题是您无法直接执行的操作:
conn=httplib.HTTPConnection("http://223.56.124.58:8080/wireless")
Run Code Online (Sandbox Code Playgroud)
触发异常getaddrinfo()
,调用getaddrinfo()
返回的C函数EAI_NONAME
:
节点或服务未知; 或者节点和服务都是NULL; 或者在hints.ai_flags中指定了AI_NUMERICSERV,而service不是数字端口号字符串."
传递给参数显然存在问题getaddrinfo
,并且很可能是您尝试获取"223.56.124.58:8080/wireless"
主机的信息.哎呀!
实际上,您无法直接连接到URL地址.随着文档清楚地说明和显示,您连接到服务器:
conn = httplib.HTTPConnection("223.56.124.58", 8080)
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
conn.request("POST", "wireless", params, headers)
Run Code Online (Sandbox Code Playgroud)
你实际使用的脚本怎么样?
conn.request("POST","http://202.45.139.58:8080/ppod-web",params,headers)
Run Code Online (Sandbox Code Playgroud)
即使连接正确形成,也可以将POST发送到http://202.45.139.58:8080/http://202.45.139.58:8080/ppod-web
.你真正想要的可能是:
conn = httplib.HTTPConnection("202.45.139.58", 8080)
conn.request("POST", "ppod-web", params, headers)
Run Code Online (Sandbox Code Playgroud)
此行显示错误,因为很可能HTTPConnection
是一个惰性对象,并且只在您调用时尝试实际连接到服务器request()
.
完成上述操作后,您需要修复params
.
>>> urllib.urlencode({"wifi":{"ssid":"guest","rssi","80"}})
SyntaxError: invalid syntax
>>> urllib.urlencode({"wifi":{"ssid":"guest","rssi":"80"}})
'wifi=%7B%27rssi%27%3A+%2780%27%2C+%27ssid%27%3A+%27guest%27%7D'
Run Code Online (Sandbox Code Playgroud)
为了得到你想要的东西,你应该做:
>>> urllib.urlencode({"data": {"wifi":{"ssid":"guest","rssi":"80"}}})
'data=%7B%27wifi%27%3A+%7B%27rssi%27%3A+%2780%27%2C+%27ssid%27%3A+%27guest%27%7D%7D'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29148 次 |
最近记录: |