Need help with arduino-restclient?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

csquared
201 Stars 140 Forks MIT License 51 Commits 14 Opened issues

Description

Arduino RESTful HTTP Request Library

Services available

!
?

Need anything else?

Contributors list

# 121,408
Ruby
ghost
Heroku
ecs
42 commits
# 35,719
playfra...
Maven
multita...
jvm
1 commit

RestClient for Arduino

HTTP Request library for Arduino and the Ethernet shield.

Install

Clone (or download and unzip) the repository to

~/Documents/Arduino/libraries
where
~/Documents/Arduino
is your sketchbook directory.
> cd ~/Documents/Arduino
> mkdir libraries
> cd libraries
> git clone https://github.com/csquared/arduino-restclient.git RestClient

Usage

Include

You need to have the

Ethernet
library already included.
#include 
#include 
#include "RestClient.h"

RestClient(host/ip, [port])

Constructor to create an RestClient object to make requests against.

Use domain name and default to port 80:

c++
RestClient client = RestClient("arduino-http-lib-test.herokuapp.com");

Use a local IP and an explicit port:

c++
RestClient client = RestClient("192.168.1.50",5000);

dhcp()

Sets up

EthernetClient
with a mac address of
DEADBEEFFEED
. Returns
true
or
false
to indicate if setting up DHCP was successful or not
  client.dhcp()

Note: you can have multiple RestClient objects but only need to call this once.

Note: if you have multiple Arduinos on the same network, you'll need to give each one a different mac address.

begin(byte mac[])

It just wraps the

EthernetClient
call to
begin
and DHCPs. Use this if you need to explicitly set the mac address.
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  if (client.begin(mac) == 0) {
     Serial.println("Failed to configure Ethernet using DHCP");
  }

Manual Ethernet Setup

You can skip the above methods and just configure the EthernetClient yourself:

  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  //the IP address for the shield:
  byte ip[] = { 192, 168, 2, 11 };
  Ethernet.begin(mac,ip);
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  Ethernet.begin(mac);

This is especially useful for debugging network connection issues.

RESTful methods

All methods return an HTTP status code or 0 if there was an error.

get(const char* path)

get(const char* path, String* response)

Start making requests!

int statusCode = client.get("/"));

Pass in a string by reference for the response:

String response = "";
int statusCode = client.get("/", &response);

post(const char* path, const char* body)

post(const char* path, String* response)

post(const char* path, const char* body, String* response)

String response = "";
int statusCode = client.post("/", &response);
statusCode = client.post("/", "foo=bar");
response = "";
statusCode = client.post("/", "foo=bar", &response);

put(const char* path, const char* body)

put(const char* path, String* response)

put(const char* path, const char* body, String* response)

String response = "";
int statusCode = client.put("/", &response);
statusCode = client.put("/", "foo=bar");
response = "";
statusCode = client.put("/", "foo=bar", &response);

del(const char* path)

del(const char* path, const char* body)

del(const char* path, String* response)

del(const char* path, const char* body, String* response)

String response = "";
int statusCode = client.del("/", &response);

Full Example

I test every way of calling the library (against a public heroku app)[https://github.com/csquared/arduino-http-test].

You can find the file in File->Examples->RestClient->fulltestsuite

Debug Mode

If you're having trouble, you can always open

RestClient.cpp
and throw at the top:
#define HTTP_DEBUG

Everything happening in the client will get printed to the Serial port.

Thanks

ricardochimal For all his c++ help. Couldn't have done this without you!

theycallmeswift Helping incept and debug v1.0

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.