我试图使用这为Ubiquiti的mPower单元复制路缘宝石 HTTP,并将输出存储到路缘宝石文件中。
使用cURL:
curl -X POST -d "username=user&password=pass" -b "AIROS_SESSIONID=01234567890123456789012345678901" 192.168.1.75/login.cgi
curl -b "AIROS_SESSIONID=01234567890123456789012345678901" 192.168.1.75/sensors/1/power返回:
{"sensors":[{"power":2.740736961}],"status":"success"}使用:的尝试
require 'curb'
cookie = rand(36**32).to_s(36)
curl = Curl::Easy.new('http://192.168.1.75/login.cgi')
curl.http_post(
Curl::PostField.content('username', 'user'),
Curl::PostField.content('password', 'pass'))
curl = Curl::Easy.new('http://192.168.1.75/sensors/1/power')
curl.cookies = cookie
curl.perform将puts curl.perform添加到脚本的末尾会打印true。
使用cURL,我通常可以在响应出现之前从命令行执行curl -b...时延迟1-3秒来提取数据。如何使用Curb实现相同的结果,并将仅将电源数据保存为一个局部变量?除了Curb,还有更好的工具来完成这个任务吗?
发布于 2016-03-12 21:06:22
我将使用JSON模块解析结果。
require 'curb'
require 'json'
curl = Curl::Easy.new('http://192.168.1.75/login.cgi')
curl.cookies = "AIROS_SESSIONID=#{rand(36**32).to_s(36)}"
curl.http_post(
Curl::PostField.content('username', 'user'),
Curl::PostField.content('password', 'pass'))
curl.url = 'http://192.168.1.75/sensors/1/power'
curl.perform
result_hash = JSON.parse(curl.body_str)
power = result_hash["sensors"][0]["power"] #=> should get 2.740736961无法测试它,因为我没有实现您的API,但是如果响应与您出现的完全相同的话,这应该可以工作。
https://stackoverflow.com/questions/35952644
复制相似问题