mirror of
https://github.com/arduino-libraries/ArduinoHttpClient.git
synced 2025-04-19 21:22:15 +03:00
125 lines
3.1 KiB
Plaintext
125 lines
3.1 KiB
Plaintext
// (c) Copyright 2010-2011 MCQN Ltd.
|
|
// Released under Apache License, version 2.0
|
|
//
|
|
// Simple example to show how to use the HttpClient library
|
|
// Get's the web page given at http://<kHostname><kPath> and
|
|
// outputs the content to the serial port
|
|
|
|
#include <SPI.h>
|
|
#include <HttpClient.h>
|
|
#include <b64.h>
|
|
#include <Ethernet.h>
|
|
#include <Client.h>
|
|
|
|
// This example downloads the URL "http://arduino.cc/"
|
|
|
|
// Name of the server we want to connect to
|
|
char* kHostname = "arduino.cc";
|
|
// Path to download (this is the bit after the hostname in the URL
|
|
// that you want to download
|
|
const char* kPath = "/";
|
|
|
|
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
|
|
|
|
// Number of milliseconds to wait without receiving any data before we give up
|
|
const int kNetworkTimeout = 30*1000;
|
|
// Number of milliseconds to wait if no data is available before trying again
|
|
const int kNetworkDelay = 1000;
|
|
|
|
void setup()
|
|
{
|
|
// initialize serial communications at 9600 bps:
|
|
Serial.begin(9600);
|
|
|
|
while (Ethernet.begin(mac) != 1)
|
|
{
|
|
#ifdef LOGGING
|
|
Serial.println("Error getting IP address via DHCP, trying again...");
|
|
#endif
|
|
delay(15000);
|
|
}
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
int err =0;
|
|
|
|
Client c;
|
|
HttpClient http(c);
|
|
|
|
err = http.get(kHostname, 80, kPath);
|
|
if (err == 0)
|
|
{
|
|
Serial.println("startedRequest ok");
|
|
|
|
http.finishRequest();
|
|
|
|
err = http.responseStatusCode();
|
|
if (err >= 0)
|
|
{
|
|
Serial.print("Got status code: ");
|
|
Serial.println(err);
|
|
|
|
// Usually you'd check that the response code is 200 or a
|
|
// similar "success" code (200-299) before carrying on,
|
|
// but we'll print out whatever response we get
|
|
|
|
err = http.skipResponseHeaders();
|
|
if (err >= 0)
|
|
{
|
|
int bodyLen = http.contentLength();
|
|
Serial.print("Content length is: ");
|
|
Serial.println(bodyLen);
|
|
Serial.println();
|
|
Serial.println("Body returned follows:");
|
|
|
|
// Now we've got to the body, so we can print it out
|
|
unsigned long timeoutStart = millis();
|
|
char c;
|
|
// Whilst we haven't timed out & haven't reached the end of the body
|
|
while (http.connected() &&
|
|
( (millis() - timeoutStart) < kNetworkTimeout ))
|
|
{
|
|
if (http.available())
|
|
{
|
|
c = http.read();
|
|
// Print out this character
|
|
Serial.print(c);
|
|
|
|
bodyLen--;
|
|
// We read something, reset the timeout counter
|
|
timeoutStart = millis();
|
|
}
|
|
else
|
|
{
|
|
// We haven't got any data, so let's pause to allow some to
|
|
// arrive
|
|
delay(kNetworkDelay);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Serial.print("Failed to skip response headers: ");
|
|
Serial.println(err);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Serial.print("Getting response failed: ");
|
|
Serial.println(err);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Serial.print("Connect failed: ");
|
|
Serial.println(err);
|
|
}
|
|
http.stop();
|
|
|
|
// And just stop, now that we've tried a download
|
|
while(1);
|
|
}
|
|
|
|
|