首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Arduino检查XBMC

用Arduino检查XBMC
EN

Stack Overflow用户
提问于 2014-06-06 21:45:09
回答 1查看 709关注 0票数 1

一周前,我用我的Arduino MEGA 2560和以太网盾启动了一个新项目。我能够向我的服务器发送一个WOL,但是现在我想用JSON命令来平平我的XBMC服务器。在我的Chrome浏览器中,我可以通过响应HTTP请求检查服务器:

代码语言:javascript
复制
http://192.168.5.34/jsonrpc?request={"jsonrpc": "2.0", "id": 1, "method": "JSONRPC.Ping"}

因此,我从XBMC服务器得到了一个干净的PONG:

代码语言:javascript
复制
{"id":1,"jsonrpc":"2.0","result":"pong"}

现在,我尝试使用嵌入在函数中的以下代码对Arduino执行此操作:

代码语言:javascript
复制
EthernetClient client;
IPAddress server(192,168,5,34);
if (client.connect(server, 80))
{
  Serial.println("Connecting to Client...");
  client.print("GET /jsonrpc?request={%22jsonrpc%22:%20%222.0%22,%20%22id%22:%201,%20%22method%22:%20%22JSONRPC.Ping%22} HTTP/1.1\r\n");
  client.print("Host: 192.168.5.34\r\n");
  client.print("User-Agent: Mozilla/5.0\r\n");
  client.print("Connection: close\r\n\r\n");
}
else
    Serial.println("Client Connection Failed!");

我的Arduino得到了如下回报:

代码语言:javascript
复制
HTTP/1.1 401 Unauthorized
Content-Length: 0
Connection: close
WWW-Authenticate: Basic realm=XBMC
Date: Fri, 06 Jun 2014 21:33:24 GMT

我可以用我的Arduino向Google提出一个GET请求,所以由于某种原因,XBMC不接受我的GET请求。有人知道为什么吗?我使用Wireshark来嗅探服务器上的网络数据,并且在Wireshark中存在请求和返回。

是否有办法通过GET或POST登录XBMC服务器?

谢谢你们的帮助!:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-09 18:32:27

代码语言:javascript
复制
WWW-Authenticate: Basic realm=XBMC

这意味着服务器请求用户代理(在本例中为Arduino)使用基本访问身份验证进行身份验证。

添加这一行应该可以做到这一点:

代码语言:javascript
复制
 client.print("Authorization: Basic xxxxxxxxxxxxxxxxxxxx\r\n");

xxxxxxxxxxxxxxxxxxxx是Base64编码的地方(更准确地说,使用了Base64的and 2045-MIME变体,但不限于76字符/行)用户名和密码。为了获得它,您可以在从浏览器发送请求时使用Wireshark捕获这个请求头,或者生成它:

  1. 检查您的XBMC设置(Settings > Services > Webserver)以获得用户名/密码。默认情况下,它是xbmc:xbmc。
  2. 转到http://www.motobit.com/util/base64-decoder-encoder.asp,在第一个文本框中使用格式:username:password (例如xbmc:xbmc )输入用户名和密码。选择“编码”选项,将每行的最大字符更改为某个较大的值,例如500,然后按“转换源数据”。
  3. 复制Base64表示(对于xbmc:xbmc,它将是eGJtYzp4Ym1j,并在标题中使用它,例如: Client.print(“授权:基本eGJtYzp4Ym1j\r\n");

您还可以使用https://github.com/adamvr/arduino-base64库进行base64编码。

它在浏览器中工作的原因是它可能已经过身份验证。

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

https://stackoverflow.com/questions/24091084

复制
相关文章

相似问题

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