1
0
mirror of https://github.com/arduino-libraries/ArduinoHttpClient.git synced 2025-04-19 21:22:15 +03:00

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);
}