0

I'm working on Arduino and Ethernet shield.

I need to call a URL. How can do it? (This URL is HTTP API to send an SMS to my phone).

  1. url: http://api.clickatell.com/http/sendmsg?user=mohammed.atha&password=********&api_id=3539384&to=********&text=hello
dda
1,5951 gold badge12 silver badges17 bronze badges
asked Apr 28, 2015 at 21:21

1 Answer 1

2

You need to use the EthernetClient. link

The exemple using your API call is:

if (client.connect(server, 80)) {
 Serial.println("connected");
 // Make your API request:
 client.println("GET /sendmsg?user=mohammed.atha&password=********&api_id=3539384&to=********&text=hello HTTP/1.1");
 client.println("Host: api.clickatell.com/http/sendmsg");
 client.println("Connection: close");
 client.println();
} 

Full example from Arduino.cc docs:

#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// if you don't want to use DNS (and reduce your sketch size)
// use the numeric IP instead of the name for the server:
//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS)
char server[] = "www.google.com"; // name address for Google (using DNS)
// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192,168,0,177);
// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
void setup() {
 // Open serial communications and wait for port to open:
 Serial.begin(9600);
 while (!Serial) {
 ; // wait for serial port to connect. Needed for Leonardo only
 }
 // start the Ethernet connection:
 if (Ethernet.begin(mac) == 0) {
 Serial.println("Failed to configure Ethernet using DHCP");
 // no point in carrying on, so do nothing forevermore:
 // try to congifure using IP address instead of DHCP:
 Ethernet.begin(mac, ip);
 }
 // give the Ethernet shield a second to initialize:
 delay(1000);
 Serial.println("connecting...");
 // if you get a connection, report back via serial:
 if (client.connect(server, 80)) {
 Serial.println("connected");
 // Make your API request:
 client.println("GET /sendmsg?user=mohammed.atha&password=********&api_id=3539384&to=********&text=hello HTTP/1.1");
 client.println("Host: api.clickatell.com/http/sendmsg");
 client.println("Connection: close");
 client.println();
 } 
 else {
 // kf you didn't get a connection to the server:
 Serial.println("connection failed");
 }
}
void loop()
{
 // if there are incoming bytes available 
 // from the server, read them and print them:
 if (client.available()) {
 char c = client.read();
 Serial.print(c);
 }
 // if the server's disconnected, stop the client:
 if (!client.connected()) {
 Serial.println();
 Serial.println("disconnecting.");
 client.stop();
 // do nothing forevermore:
 while(true);
 }
}
answered Apr 28, 2015 at 23:15
9
  • how this can help me !!! plz help me Commented Apr 29, 2015 at 15:35
  • Just look at client.connect(server, 80) in code in the example, i've changed to work with your API call. Commented Apr 30, 2015 at 2:53
  • thnx thnx thnx :D but why use google.com as server ? (char server[] = "www.google.com";) Commented Apr 30, 2015 at 13:15
  • Is there a need for subnet and default gateway ? Commented Apr 30, 2015 at 13:19
  • 1
    @MohammedAthamneh please vote in the answer if it helped you ;) Commented Jul 23, 2015 at 16:49

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.