Arduino 通过api接口 post 数据
发布日期:2021-05-12 17:14:00 浏览次数:18 分类:精选文章

本文共 2963 字,大约阅读时间需要 9 分钟。

1. URL 编码形式 Post 数据

在物联网开发中,Post 数据可以以 URL 编码形式发送。这种编码方法非常适合简单的数据交互场景。以下是一段示例代码:

#include "arduinohttpclient.h"
#include "wifi101.h"
#include "arduino_secrets.h"
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
char serverAddress[] = "192.168.0.3"; // 服务器地址
int port = 8080; // 端口号
WiFiClient wifi;
HttpClient client = HttpClient(wifi, serverAddress, port);
int status = WL_IDLE_STATUS;
void setup() {
Serial.begin(9600);
while (status != WL_CONNECTED) {
Serial.print("Attempting to connect to Network named: ");
Serial.println(ssid);
// 试图连接到 WPA/WPA2 网络
status = WiFi.begin(ssid, pass);
}
// 显示已连接的 SSID
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// 显示本地 IP 地址
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
}
void loop() {
Serial.println("发送 Post 请求");
String contentType = "application/x-www-form-urlencoded";
String postData = "name=Alice&age=12";
// 发送 Post 请求
client.post("/", contentType, postData);
// 读取响应状态码和内容
int statusCode = client.responseStatusCode();
String response = client.responseBody();
Serial.print("状态码: ");
Serial.println(statusCode);
Serial.print("响应内容: ");
Serial.println(response);
// 等待 5 秒
delay(5000);
}

2. JSON 格式 Post 数据

使用 JSON 格式发送 Post 数据是现代应用开发的标准方式。以下是一段示例代码:

#include "esp8266wifi.h"
#include "esp8266httpclient.h"
#include "arduinojson.h"
void setup() {
Serial.begin(115200);
// 连接 Wi-Fi
WiFi.begin("UU", "1212312121");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("正在等待连接");
}
}
void loop() {
int sensor_value = 45;
if (WiFi.status() == WL_CONNECTED) {
// 创建 JSON 数据
String json = "{\"sensor\":\"gps\",\"value\":\""+ String(sensor_value) +"\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
DynamicJsonBuffer jsonBuffer;
char postMessage[300];
JsonObject& root = jsonBuffer.createObject();
JsonObject& jarray = jsonBuffer.parseObject(json);
root["name"] = "lll";
root["content"] = jarray;
root.printTo(postMessage, sizeof(postMessage));
Serial.println(postMessage);
// 发送 Post 请求
HTTPClient http;
http.begin("http://iot.data.ubu.ac.th/api/save");
http.addHeader("Content-Type", "application/json");
int httpCode = http.POST(postMessage);
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
http.end();
// 等待 30 秒
delay(3000);
} else {
Serial.println("Wi-Fi 连接失败");
}
}

关键注意事项

  • 数据格式要求:不同的 API 接口对数据格式有不同的限制。例如,一些接口只接受 JSON 格式,而另一些可能支持文本或表单参数等多种格式。
  • 数据长度限制:了解服务器端对 Post 数据大小的限制,避免超出 ارسال数据量过大导致的失败。
  • HEAD 和 POST 操作:确保在发送数据之前,已正确设置请求头(如 Content-Type)。HTTP HEAD 请求可以帮助避免大数据转传耗时。

通过以上方法,您可以灵活地根据具体需求选择合适的数据发送格式。

上一篇:页面中实现轮播图效果
下一篇:pyqt5——消息框(QMessageBox)

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月24日 15时23分17秒