是否有方法将HTTP消息(GET、POST等)从BLE中心(客户端)发送到BLE外围设备(服务器)?目前,我正在使用GATT协议发送纯文本。由于HTTP服务器已经在我的外围设备中运行,所以我宁愿使用HTTP协议。有人建议我使用HPS(HTTP代理服务)而不是BLE来完成这项工作。但我真的对HPS一无所知。
是否有其他方式从客户端发送HTTP消息到Server?有人能告诉我怎么做吗?或者有没有其他方式可以通过BLE发送HTTP。
如能提供任何帮助,将不胜感激。
发布于 2017-11-27 19:33:18
<edit>,您问过,除了标准化的HPS之外,是否还有其他方法可以通过蓝牙发送HTTP消息。据我所知你还有一个标准化的选择。</edit>唯一标准化的东西是IPv6而不是BLE,但它还远远没有得到很好的支持。http的问题是,由于需要作为头文件发送的字符串很长,所以效率很低。
<edit>
您可以在这里找到HPS服务:id=308344。
如果您真的希望在BLE上使用HTTP,但不想使用任何标准化的方法,那么您可以打开一个L2CAP CoC,只向一个方向发送HTTP请求,然后向一个方向发送HTTP响应。这样你就可以用L2CAP CoC代替TCP了。
</edit>
发布于 2020-04-22 09:43:36
我不同意Emil的说法,即蓝牙IPv6是唯一标准化的选择。我为蓝牙SIG工作。HTTP代理服务是GATT的标准服务。您可以在这里下载规范:https://www.bluetooth.com/specifications/gatt/
这里有一些评论,大意是“基于蓝牙的HTTP”是个坏主意,但没有详细说明什么是“坏”。我认为,对于HTTP代理服务所涉及的内容和打算使用的用途,可能会有一些混淆。
此GATT HTTP代理服务必须运行在具有蓝牙低能(LE)堆栈和TCP/IP堆栈的设备上。它具有GATT特性,允许通过向这些特性写入值来配置HTTP请求。这包括HTTP头值。人们的期望是,大多数这样的参数在最初设置之后不会改变,或者至少不会频繁变化。设备充当GATT HTTP代理服务的客户端,然后通过GATT服务器通过HTTP和TCP/IP间接发送数据。他们这样做是通过写入HTTP实体的主体特征.通常是一个很小的值,例如传感器读数。然后由GATT客户端设备通过将单个字节写入HTTP控制点特征(例如,1触发HTTP )来触发HTTP操作。
谈论基于蓝牙的HTTP可能是个错误的说法。这里不是这样的。这是一个三层体系结构,在(1)蓝牙设备和(2)双技术蓝牙和TCP/IP设备之间进行非常轻量级的蓝牙LE通信,充当代理,然后代理通过TCP/IP将其配置的蓝牙编码请求与(3)远程HTTP服务器通信。
至于关于使用串口配置文件的评论和这将提供性能优势的建议,这也是值得怀疑的。这里没有关于设想的细节,但我认为整个HTTP操作都是使用串口配置文件通过蓝牙BR/EDR连接来制定和发送的。蓝牙BR/EDR在物理层以每秒2兆符号运行,默认情况下,蓝牙LE以每秒1兆符号的速度运行。但是自从几年前发布了蓝牙5之后,蓝牙LE也支持每秒2兆符号。此外,由于HTTP代理服务的设计,HTTP请求的固定或很少变化的组件部分只需要配置一次,您可能会发现在使用HPS与SPP时传输的数据较少。当然,这取决于一切,但我认为这很可能.
希望这能有所帮助。
发布于 2020-01-09 16:28:01
你可以使用蓝牙网关。一些蓝牙网关支持运营商设备的Restful。
https://stackoverflow.com/questions/47511294
复制相似问题