Trying to upload data via ethernet and HTTP GET

Hi, I have an Arduino Uno and a V3 Ethernet shield.

At some point, I am going to be logging some GPS coordinates via the ethernet shield and a GPS module. For now, I am just trying to figure out how to send the data. My code:

/*
  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[] = {  0x90, 0xA2, 0xDA, 0x0D, 0x45, 0x2B };
byte ip[] = {  192, 168, 2, 2 };
byte dnServer[] = {  192, 168, 2, 1 };
byte gateway[] = {  192, 168, 2, 1 };
byte subnet[] = {  255, 255, 255, 0 };
byte server[] = { 184, 168, 27, XX };
unsigned long latitude = 44;


// 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:
    Ethernet.begin(mac, ip, dnServer, gateway, subnet);
  // 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 a HTTP request:
    client.println("GET /default.aspx?q1=latitude HTTP/1.1");
    client.println("HOST: test.com");
    client.println("USER-AGENT: Arduino");
    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(;;)
      ;
  }
}

As you can tell, I just started out with the stock web client example. I have a friend who wrote the default.aspx query string. As the code is now, the webserver gives an error, "0 - Exception: Input string was not in a correct format". I know it is looking for ASCI characters, numbers specifically. When I change

/default.aspx?q1=latitude

to

/default.aspx?q1=1

or any other number, it works fine.

So, I need to convert my long named latitude to char first? If someone could point me in the right direction it would be appreciated.

Thanks!

So, I need to convert my long named latitude to char first?

Of course.

If someone could point me in the right direction it would be appreciated.

There are several ways. One would be to use sprintf() to create a string to send to the client, containing the whole GET request. Another would be to send the request in 3 parts.

    client.print("GET /default.aspx?q1=");
   client.print(latitude);
   client.println(" HTTP/1.1");

The client will put all the packets back together in the correct order.

Hi PaulS,

Thanks for the help, that got it working.