2022年7月16日土曜日

https_get::arduinoIDE for esp32 only,micropython for esp32 and esp8266 OK

2022年9月現在ではesp8266のhttps getはfinger-printがいるげな よって却下

https://micropython-docs-ja.readthedocs.io/ja/latest/esp8266/tutorial/intro.html 

これはesp8266用のmicropy

-------------------------------------------------------------------

 https://garretlab.web.fc2.com/arduino/esp32/examples/WiFiClientSecure/WiFiClientInsecure.html

https:://blog.livedoor.jp/sce_info3-craft/archives/9551267.html を参考に

#include <WiFiClientSecure.h>


const char* ssid     = "";     // your network SSID (name of wifi network)

const char* password = ""; // your network password


const char* server = "fseigojp.web.fc2.com"; // "www.google.co.jp"など

const char* path = "https://fseigojp.web.fc2.com/"; // サーバー名に続くパス, "/"から始める


WiFiClientSecure client;


void setup() {

  //Initialize serial and wait for port to open:

  Serial.begin(115200);

  delay(100);


  // Wi-Fiに接続

  Serial.print("Attempting to connect to SSID: ");

  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    Serial.print(".");

    // wait 1 second for re-trying

    delay(1000);

  }

  Serial.print("Connected to ");

  Serial.println(ssid);


  // サイトにアクセス

  Serial.println("\nStarting connection to server...");

  client.setInsecure(); //ここが重要で要追加だった

  if (!client.connect(server, 443))

    Serial.println("Connection failed!");

  else {

    Serial.println("Connected to server!\n");

    // Make a HTTP request:

    client.println("GET " + String(path) + " HTTP/1.1");

    client.println("Host: " + String(server)); // HTTP1.1で必須のヘッダ, アクセス先サーバーとしておく(そうしないとクロスドメインアクセスになる)

    client.println("Connection: Keep-Alive");

    client.println();


    if (client.connected()) {

      // ヘッダの受信

      Serial.println("--- Header ---");

      while (1) {

        String line = client.readStringUntil('\n');

        Serial.println(line);

        if (line == "\r") {

          break; // ヘッダの末尾は\r\nだからそこで終了

        }

      }

      // ボディの表示

      Serial.println("--- Body ---");

      while (client.available()) {

        char c = client.read();

        Serial.write(c);

      }

    }

    client.stop();

  }

  Serial.println("\n\nfinish.");

}


void loop() {

  // do nothing

}

ーーーーーmicropython at esp32 and esp8266  ーーーーーーーーーーーーーーーーーーー
https://qiita.com/kotaproj/items/96a61031aefd1bba9cc8 これはesp32仕様だが
まったく同じコードがespr8266でも動いた!

import network
import time
import urequests as requests

# 接続するアクセスポイント情報
SSID = ""
PASS = ""

def do_connect():

    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(SSID, PASS)
        while not wlan.isconnected():
            time.sleep(1)
    print('network config:', wlan.ifconfig())

    return


do_connect()


# url = "https://www.example.com/"
url = "https://fseigojp.web.fc2.com/"
response = requests.get(url)
print(response.text)
response.close()

0 件のコメント:

コメントを投稿