问题标签 [arduino-uno-wifi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2561 浏览

http - 在 Arduino Uno Wifi Rev 2 上使用 WiFiNina 库发布请求

我正在尝试为 Arduino Uno WiFi Rev2 板编写一些代码。具体来说,我想使用 POST HTTP 请求将一些数据发送到我编写的 API 端点。我已经用 Postman 测试了这个端点,它工作正常。但是,当我尝试使用 WiFiNina 库 ( https://www.arduino.cc/en/Reference/WiFiNINA ) 发布我的数据时,请求永远不会到达我的端点。

我的 Arduino 草图包含两个文件。第一个是我的“主”文件,它充当我的代码的入口点并处理我的代码的大部分功能。在这个文件中,我按照 Arduino 文档中的说明设置了 WiFiClient:

在我的第二个文件中,这是处理此 API 请求的代码部分:

我根据我在网上找到的 WiFiNina 库的示例和文档构建了这个请求。(这里有一个例子:https ://www.arduino.cc/en/Reference/WiFiNINAClient )。标头信息和正文基于我通过 Postman 发送的请求,因此我相信我的请求内容是准确的。我相信我能够通过“client.connect”行连接到服务器,因为我从未看到错误消息打印到串行监视器,但我看到串行监视器显示“Serial.println”语句的内容我放在我的“client.println”语句之前。但是,托管 API 终结点的 Azure Function App 没有显示 API 终结点被命中的迹象。当我用 Postman 发送相同的数据时,

当我尝试从 postData 函数中将正文、URL 和 body.length() 的内容打印到串行监视器时,一切都按预期显示。此外,我在“连接:关闭”行尝试了不同的选项,但无济于事。

作为参考,这是 Postman 在成功访问 API 端点时告诉我它正在发送的内容。我也尝试过端口 443。它在 Postman 中运行良好,但在 Arduino 中又不行。

0 投票
1 回答
183 浏览

inheritance - 您可以继承 HttpClient 并创建自己的自定义 Arduino 库吗?

我使用一些示例代码创建了一个 HttpClient 的工作草图,将 JSON 从 Uno rv2 发送到 C# api。都好。

接下来计划将此添加到草图中,以使用 Sparkfun 天气防护罩发送相同的 JSON。我想保持屏蔽代码更干净,我会创建一个继承 HttpClient 的自定义库,并在构造函数中传递 WifiClient、serverName、端口和 wifi 凭据。

我已经有 20 多年没有做过很多 C、C++ 了。我正在尝试做的事情可能吗?还是我只是很生疏,还没有弄清楚。(我第一次尝试自定义库时可能应该选择更简单的东西)

如果可能的话,我猜我已经把构造函数搞砸了,并且在一个主题上尝试了许多变体,但没有结果。

欣赏任何见解。

更新:所以我做了一些更改,但我仍然遇到编译错误,有人告诉我添加我已经完成的继承类(HttpClient)的虚拟方法,但我仍然遇到编译问题。附上错误。

这是我的标题。

和.cpp

最后是我的草图.ino

这是错误输出