diff --git a/examples/requests_advanced.py b/examples/requests_advanced.py new file mode 100644 index 0000000..11401ba --- /dev/null +++ b/examples/requests_advanced.py @@ -0,0 +1,55 @@ +import board +import busio +from digitalio import DigitalInOut +import adafruit_esp32spi.adafruit_esp32spi_socket as socket +from adafruit_esp32spi import adafruit_esp32spi +import adafruit_requests as requests + +# If you are using a board with pre-defined ESP32 Pins: +esp32_cs = DigitalInOut(board.ESP_CS) +esp32_ready = DigitalInOut(board.ESP_BUSY) +esp32_reset = DigitalInOut(board.ESP_RESET) + +# If you have an externally connected ESP32: +# esp32_cs = DigitalInOut(board.D9) +# esp32_ready = DigitalInOut(board.D10) +# esp32_reset = DigitalInOut(board.D5) + +spi = busio.SPI(board.SCK, board.MOSI, board.MISO) +esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) + +print("Connecting to AP...") +while not esp.is_connected: + try: + esp.connect_AP(b'MY_SSID_NAME', b'MY_SSID_PASSWORD') + except RuntimeError as e: + print("could not connect to AP, retrying: ",e) + continue +print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) + +# Initialize a requests object with a socket and esp32spi interface +requests.set_socket(socket, esp) + +JSON_GET_URL = "http://httpbin.org/get" + +# Define a custom header as a dict. +headers = {"user-agent" : "blinka/1.0.0"} + +print("Fetching JSON data from %s..."%JSON_GET_URL) +response = requests.get(JSON_GET_URL, headers=headers) +print('-'*60) + +json_data = response.json() +headers = json_data['headers'] +print("Response's Custom User-Agent Header: {0}".format(headers['User-Agent'])) +print('-'*60) + +# Read Response's HTTP status code +print("Response HTTP Status Code: ", response.status_code) +print('-'*60) + +# Read Response, as raw bytes instead of pretty text +print("Raw Response: ", response.content) + +# Close, delete and collect the response data +response.close() diff --git a/examples/requests_simpletest.py b/examples/requests_simpletest.py index b598a20..36d2b28 100755 --- a/examples/requests_simpletest.py +++ b/examples/requests_simpletest.py @@ -6,12 +6,6 @@ from adafruit_esp32spi import adafruit_esp32spi import adafruit_requests as requests -print("ESP32 SPI webclient test") - -TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html" -JSON_URL = "http://api.coindesk.com/v1/bpi/currentprice/USD.json" - - # If you are using a board with pre-defined ESP32 Pins: esp32_cs = DigitalInOut(board.ESP_CS) esp32_ready = DigitalInOut(board.ESP_BUSY) @@ -24,7 +18,6 @@ spi = busio.SPI(board.SCK, board.MOSI, board.MISO) esp = adafruit_esp32spi.ESP_SPIcontrol(spi, esp32_cs, esp32_ready, esp32_reset) -requests.set_socket(socket, esp) print("Connecting to AP...") while not esp.is_connected: @@ -35,20 +28,47 @@ continue print("Connected to", str(esp.ssid, 'utf-8'), "\tRSSI:", esp.rssi) -#esp._debug = True -print("Fetching text from", TEXT_URL) -r = requests.get(TEXT_URL) +# Initialize a requests object with a socket and esp32spi interface +requests.set_socket(socket, esp) + +TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html" +JSON_GET_URL = "http://httpbin.org/get" +JSON_POST_URL = "http://httpbin.org/post" + +print("Fetching text from %s"%TEXT_URL) +response = requests.get(TEXT_URL) print('-'*40) -print(r.text) + +print("Text Response: ", response.text) print('-'*40) -r.close() +response.close() -print() -print("Fetching json from", JSON_URL) -r = requests.get(JSON_URL) +print("Fetching JSON data from %s"%JSON_GET_URL) +response = requests.get(JSON_GET_URL) print('-'*40) -print(r.json()) + +print("JSON Response: ", response.json()) print('-'*40) -r.close() +response.close() -print("Done!") +data = '31F' +print("POSTing data to {0}: {1}".format(JSON_POST_URL, data)) +response = requests.post(JSON_POST_URL, data=data) +print('-'*40) + +json_resp = response.json() +# Parse out the 'data' key from json_resp dict. +print("Data received from server:", json_resp['data']) +print('-'*40) +response.close() + +json_data = {"Date" : "July 25, 2019"} +print("POSTing data to {0}: {1}".format(JSON_POST_URL, json_data)) +response = requests.post(JSON_POST_URL, json=json_data) +print('-'*40) + +json_resp = response.json() +# Parse out the 'json' key from json_resp dict. +print("JSON Data received from server:", json_resp['json']) +print('-'*40) +response.close()