【问题标题】:How to a send SNEP GET request from Android如何从 Android 发送 SNEP GET 请求
【发布时间】:2017-05-14 23:10:18
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    简短回答:你不能。

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

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

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

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

    默认服务器不应接受 Get 请求。未实施 Get 请求消息的适当响应。

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

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

    如果你想通过点对点模式接收来自Android设备的NDEF消息,你需要实现一个SNEP服务器 在 ACR122U 侧。然后,Android SNEP 客户端将连接到您的 SNEP 服务器,并再次使用 PUT 请求将等待中的 NDEF 消息(例如通过 NfcAdapter.setNdefPushMessage() 注册)推送给它。

    【讨论】:

    • 好的,但是如果我在 ACR122U 端实现 SNEP 服务器呢?
    • 我认为在两个android设备之间的android beam通信中,其中一个必须充当服务器,另一个必须充当客户端,对吗?那么如果一个安卓设备可以充当SNEP客户端,为什么在我的用例中我不能使用我的ACR122U作为服务器而我的安卓手机作为客户端呢?否则,您知道如何开始在 Android 上实现我的 SNEP 服务器的任何示例吗?
    • @firegloves 在 LLCP 之上,两者都可以充当同一链路上的服务器和客户端。事实上,Android 为 SNEP 实现了客户端和服务器。正如我在上面的帖子中所写,如果您想将 NDEF 消息从 ACR122U 传输到 Android,您需要在 ACR122U 端实现 SNEP 客户端,该客户端连接并 PUT 到 Android 设备上已经存在的 SNEP 服务器。
    • 好的,谢谢您的回复,但我想要的是从 Android 发送数据并从 ACR122U 检索响应。出于这个原因,我不想使用 PUT,也不想使用 Android 作为服务器。所以,答案是,我无法使用 Android 打包一个 GET 请求,并且我的 ACR122U 上也有一个自定义 SNEP 服务器?
    • @firegloves 在这种情况下,您需要同时实现 SNEP 服务器和客户端。首先通过你的 SNEP 服务器接收来自 Android 的 NDEF 消息,然后用你的 SNEP 客户端连接到 Android 端的 SNEP 服务器,并将你的“响应”消息推送给它。
    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多