http - 将数据从设备发送到服务器的最佳方法是什么

标签 http post csv device

我目前正在为一家能源监测公司开发一个网站。我们正在尝试将大量数据从记录数据的设备发送到服务器,以便它们可以在数据库中进行处理。开发固件的人似乎认为发送数据的最佳方式是生成 CSV 文件并通过 FTP 发送。服务器上的程序需要监控通过 FTP 接收的文件并运行 PHP 脚本来处理它们。然而,我觉得发送数据的最佳方式是通过 HTTP POST。

我们让 HTTP POST 工作,然后我开始尝试使用 CSV,这变得很痛苦,因为可靠地监视通过 FTP 接收的文件意味着编辑 ProFTPD 配置文件(我发现这是一项几乎不可能完成的任务)并安装一个名为 mod_exec 的包(存在安全风险),以便 ProFTPD 可以运行 PHP 脚本。这些问题以及我不熟悉我需要广泛使用来设置它的 linux 控制台这一事实,使得 CSV 方法很难设置。 HTTP POST 对我来说似乎是一种更直接的数据发送方式,无需担心文件或依赖 ProFTPD。它还允许我们使用标识符为传递的数据赋予意义,而不是一串意义不明显的值。此外,查询字符串可以进行 URL 编码以传递一个多维数组,这在给定传递的数据类型的情况下可以很好地工作。

然而,仅仅因为 HTTP POST 方法更容易并不意味着 CSV 方法没有优势。此外,固件专家在计算机方面的经验比我丰富得多,所以我相信他的意见。

能否请您帮助我理解他对 CSV 方法优点的看法,并说明最好的方法是什么?

最佳答案

你是对的。 FTP 在防火墙方面存在重大问题,尤其是在移动(NAT'ted)IPv4 上运行不佳。 HTTP POST 在这种情况下工作得非常非常好,如果只是因为没有人接受破坏 HTTP 的“互联网”连接。

此外,HTTP 在设备上也容易得多。它只是一个单套接字协议(protocol),在该套接字上具有简单的读/写语义。

还有什么好处? HTTP 几乎原生支持压缩 (gzip)。 HTTP 传输可以在输入完成之前开始。 HTTP 更易于保护 (HTTPS)...

不,确实没有什么理由使用 FTP。

关于http - 将数据从设备发送到服务器的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162492/

相关文章:

javascript - 为什么客户端认证不好?

ios - iOS 应用程序提交中的导出合规性

c# - .NET:使用 C# 列出 HTTP 流量 URL

node.js - 如何在 Node 中通过 HTTP 读取二进制文件?

jsf - <commandlink action=...> 中 "?faces-redirect=true"的语义以及为什么不在任何地方使用它

java - 仅检索 POST 参数 (Java)

Java编写Shift-JIS CSV格式文件

json - 尝试 POST 时为 "Invalid JSON"

java - 将 XML 转换为 CSV 的代码出现 NullPointerException

python - 如何在 Python 中从包含 N 行的 csv 文件创建嵌套字典