首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby Ubiquiti mPower HTTP

Ruby Ubiquiti mPower HTTP
EN

Stack Overflow用户
提问于 2016-03-12 01:29:43
回答 1查看 209关注 0票数 0

我试图使用为Ubiquiti的mPower单元复制路缘宝石 HTTP,并将输出存储到路缘宝石文件中。

使用cURL:

代码语言:javascript
复制
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

返回:

代码语言:javascript
复制
{"sensors":[{"power":2.740736961}],"status":"success"}

使用的尝试

代码语言:javascript
复制
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,还有更好的工具来完成这个任务吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-12 21:06:22

我将使用JSON模块解析结果。

代码语言:javascript
复制
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,但是如果响应与您出现的完全相同的话,这应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35952644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档