最有可能的是,这个问题使用您在问题中发布的脚本你不能直接做:
conn=httplib.HTTPConnection("http://223.56.124.58:8080/wireless")
异常触发于getaddrinfo() http://docs.python.org/library/socket.html#socket.getaddrinfo,它调用 C 函数getaddrinfo() http://linux.die.net/man/3/getaddrinfo返回EAI_NONAME
:
节点或服务未知;或者节点和服务都为NULL;或者在hints.ai_flags中指定了AI_NUMERICSERV,并且服务不是数字端口号字符串。”
显然是传递的参数有问题getaddrinfo
,并且很可能您正在尝试获取有关"223.56.124.58:8080/wireless"
主持人。哎呀!
事实上,您无法直接连接到 URL 地址。正如文档清楚地说明和显示的那样 http://docs.python.org/library/httplib.html#httplib.HTTPConnection,您连接到server:
conn = httplib.HTTPConnection("223.56.124.58", 8080)
然后你可以这样做:
conn.request("POST", "wireless", params, headers)
关于什么你是脚本actually using?
conn.request("POST","http://202.45.139.58:8080/ppod-web",params,headers)
即使连接正确形成,您也会 POSTing 到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)
该行显示错误是因为很可能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'
To get what you think you want to get, you should do:
>>> 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'