如何从Particle上的网站读取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Particle上的网站读取数据相关的知识,希望对你有一定的参考价值。

我正在使用粒子设备进行一个项目(如在particle.io中 - 由于它具有如此模糊的名称,因此很难搜索这些东西)。我一直在做这些教程,但是我无法通过蜂窝网络找到访问HTTPS网站的任何内容。我发现这个https://build.particle.io/libs/HttpClient/0.0.5/tab/HttpClient.cpp但它不适用于https。

我需要为一个项目(不是家庭作业)阅读一个可公开访问的HTTPS网站,并根据此设置变量。我该怎么做,这个确切的问题有没有我找不到的资源?非常感谢。

答案

要进行HTTPS调用,您需要一个支持SSL的客户端。一个例子是由Glowfish制作的使用matrixSSL的httpsclient-particle

您可以这样使用它:

// This #include statement was automatically added by the Particle IDE.
#include <httpsclient-particle.h>

static int anomalyLed = D7;
static int heartbeatLed = D7;

const bool g_https_trace = true;  // This controls debug info print to Serial
const char host [] = "www.timeapi.org";
const char endpoint [] = "/utc/now/";
const int g_port = 443; // DoNOT change this unless you know what's up
static unsigned int freemem;
bool g_https_complete;
uint32 g_bytes_received;

TCPClient client;

unsigned char httpRequestContent[] = "GET %s HTTP/1.0
"
  "User-Agent: MatrixSSL/" MATRIXSSL_VERSION "
"
  "Host: www.timeapi.org
"
  "Accept: */*
"
  "Content-Type: application/json
"
  "Content-Length: %d

%s";

void setup() {
  if (g_https_trace) {
    Serial.begin(9600);
  }
  pinMode(anomalyLed, OUTPUT);
  httpsclientSetup(host, endpoint);
}

unsigned int nextTime = 0;    // Next time to contact the server
int g_connected;
void loop() {
  if (nextTime > millis()) return;
  g_connected = client.connect(host, g_port);
  if (!g_connected) {
    client.stop();
    // If TCP Client can't connect to host, exit here.
    return;
  }
  g_https_complete = false;
  g_bytes_received = 0;
  if (g_https_trace) {
    freemem = System.freeMemory();
    Serial.print("free memory: ");
    Serial.println(freemem);
  }
  int32 rc;
  if ((rc = httpsClientConnection(httpRequestContent, 0, NULL) < 0)) {
    // TODO: When massive FAIL
    httpsclientCleanUp();
    digitalWrite(anomalyLed, HIGH);
    delay(500);
    digitalWrite(anomalyLed, LOW);
    delay(500);
    digitalWrite(anomalyLed, HIGH);
    delay(500);
    digitalWrite(anomalyLed, LOW);
  } else {
    digitalWrite(heartbeatLed, HIGH);
    delay(250);
    digitalWrite(heartbeatLed, LOW);
  }
  client.stop();
  nextTime = millis() + 5000;
}

以上是关于如何从Particle上的网站读取数据的主要内容,如果未能解决你的问题,请参考以下文章

从 BigQuery 读取数据并将其写入云存储上的 avro 文件格式

Spark上的Hive如何从jdbc读取数据?

如何在片段中使用 GetJsonFromUrlTask​​.java

从 Apollo 缓存中读取特定类型的所有片段

如何使用键盘上的 Enter 键登录网站? [关闭]

从android上的wav文件中读取原始数据