Go Down

Topic: Using Arduino with Ethernet shield as a webclient (Read 704 times) previous topic - next topic

vj1953

I have a Duemilanove with Ethernet shield and am using it as a webclient. I have no difficulty downloading from webpages. I am trying to access webpages with php parameters e.g. the following

http://en.wikipedia.org/w/index.php?title=Hello_world_program&printable=yesrn

I have the following code (modification of the webclient example) and am not able to get it to download from webpages with php parameters. All I get is "connection failed" and then it disconnects. If I change the serverName from "en.wikipedia.org" to "www.wikipedia.org", it connects but gives message that the document was not found.Can anyone suggest what might be happening here.

Code: [Select]
/*
  Web client

This sketch connects to a website (http://www.google.com)
using an Arduino Wiznet Ethernet shield.

Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13

created 18 Dec 2009
modified 9 Apr 2012
by David A. Mellis

*/

#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 };
IPAddress server(173,194,33,104); // Google
char serverName[] = "en.wikipedia.org";  // twitter URL

// 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:
    for(;;)
      ;
  }
  // 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(serverName, 80)) {
    Serial.println("connected");
    // Make a HTTP request:
    client.println("GET /w/index.php?title=Hello_world_program&printable=yesrn HTTP/1.0");
    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:
    for(;;)
      ;
  }
}

PaulS

Code: [Select]
IPAddress server(173,194,33,104); // Google
char serverName[] = "en.wikipedia.org";  // twitter URL

If you are going to change the code, changing (or removing) the comments would be good, too.

The Arduino forum is php based, and doesn't redirect all over the place like wikipedia does. You might try accessing a forum topic, and see what response you get.

The "connection failed" message is a failure to connect to the server, not a failure to get a page from the server.

SurferTim

At least try it with your web browser first.
http://173.194.33.104
Quote
Oops! Google Chrome could not connect to 173.194.33.104


Go Up