如何从Android发送SNEP GET请求

时间:2016-12-30 16:57:17

标签: android nfc nfc-p2p android-beam acr122

我有一个NFC阅读器ACS ACR122U,我想从我的Android手机发送数据。

我找到了很多关于如何在P2P模式下连接两台设备以及如何将数据从手机发送到ACR122U的示例,但我的桌面服务器(ACR122U)始终收到SNEP PUT请求。我会发送一个GET请求,但我只能找到使用内置NDEF系统的Android而没有指定PUT或GET请求的示例。

如何从我的Android设备打包并发送SNEP GET请求到ACR122U?

1 个答案:

答案 0 :(得分:2)

简短的回答:你不能。

Android API不允许您实施自定义LLCP服务。在Android设备上实现的唯一LLCP服务是NFC论坛默认SNEP服务器(服务名称urn:nfc:sn:snep,服务访问点地址4),并且由于传统原因,Android NDEF推送协议(类似于SNEP但可追溯到时代)在SNEP规范发布之前)。

虽然SNEP协议规范定义了从另一个设备提取NDEF消息的GET请求,但NFC论坛默认SNEP服务器被定义为仅接受PUT请求。 GET请求必须被该SNEP服务器拒绝。

来自NFC论坛的简单NDEF交换协议技术规范(版本1.0):

  

默认SNEP服务器提供逻辑收件箱。连接到默认服务器的客户端可以使用Put请求消息将NDEF消息放入收件箱。 [...]

     

默认服务器不接受获取请求。 Get请求消息的相应响应未实现。

因此,您只能将NDEF消息推送到NFC论坛默认SNEP服务器,而不是相反。

因此,如果您想通过点对点模式向Android设备发送 NDEF消息,则需要实施 SNEP 客户端 。然后,您可以让该客户端连接到Android设备上的SNEP服务器(服务名称为urn:nfc:sn:snep),并使用PUT请求将NDEF消息推送给它。

如果您希望通过点对点模式从接收来自的NDEF消息,则需要实施 SNEP 服务器 在ACR122U方面。然后,Android SNEP客户端将连接到您的SNEP服务器并再次使用PUT请求将等待的NDEF消息(例如通过NfcAdapter.setNdefPushMessage()注册)推送到它。