Arduino w/ Google App Engine Slow print char. Please Help.

In the below code I attempt to get a temperature reading from a probe and send it to google app engine. Everything works as planned. I even get the server on google app engine to recognize the input and adjust a dial.

However, when it goes to print the char variable “c” (Serial.print(c)) in line 103ish it takes about 6-10 seconds to print each letter of the result. Is there a reason it is so slow?

Normally(without the temperature probe code ) it prints all of this in a second:
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Vary: Accept-Encoding
Date: Thu, 06 Feb 2014 04:42:47 GMT
Server: Google Frontend
Alternate-Protocol: 80:quic

Sorry for all the mess, I commented out the code for a timer to test if it was the problem and left it that way.

  #include <OneWire.h>
  #include <DallasTemperature.h>
  #define ONE_WIRE_BUS 3// Data wire is plugged into pin 3 on the Arduino
  OneWire oneWire(ONE_WIRE_BUS);// Setup a oneWire instance to communicate with any OneWire devices
  DallasTemperature sensors(&oneWire);// Pass our oneWire reference to Dallas Temperature. 
  DeviceAddress WaterTemp = { 
    0x28, 0xD2, 0xF7, 0xE0, 0x04, 0x00, 0x00, 0x94};// Assign the addresses of your 1-Wire temp sensors.
//  #include <Wire.h>
//  #include "RTClib.h"
//  RTC_DS1307 RTC;
  #include <SPI.h>
  #include <UIPEthernet.h>
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };// Enter a MAC address for your controller
  char server[] = "";    // name address for Google (using DNS)
  IPAddress ip(192,168,0,177);// Set the static IP address to use if the DHCP fails to assign
  EthernetClient client;// Initialize the Ethernet client library
  float farenheit;
  float RH; 

void setup (void) {
  Serial.begin(9600); // start serial port
    // Internet
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");    // no point in carrying on, so do nothing forevermore:
    Ethernet.begin(mac, ip);   // try to congifure using IP address instead of DHCP:
  sensors.begin();  // Start up the Temp library
  sensors.setResolution(WaterTemp, 12);// set the resolution to 10 bit 
  // Time
//    Wire.begin();  // Initialize wire library and RTC module
//    RTC.begin();
//    RTC.adjust(DateTime(__DATE__, __TIME__)); // set up the module time and date with the computer one

void connect(){
if (client.connect(server, 80)) {
      Serial.print("Sending Data:");// if you get a connection, report back via serial:
      // Make a HTTP request:
      client.print("GET");//client.println("GET" Temp  "&RH="  RH  "HTTP/1.1");
    else {
      Serial.println("Data not sent, connection failed...");    // if you didn't get a connection to the server:

void printTemperature(DeviceAddress deviceAddress) {
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    Serial.print("Error getting temperature");
    else {
      //Print Temperature
      farenheit = DallasTemperature::toFahrenheit(tempC);

void loop (void) {
    delay(3000);//Time Delay   
   // Temperature Function
    sensors.requestTemperatures();//Request temp
//      DateTime now =;
//      Serial.print(, DEC);
//      Serial.print('/');
//      Serial.print(now.month(), DEC);
//      Serial.print('/');
//      Serial.print(now.year(), DEC);
//      Serial.print(' ');
//      Serial.print(now.hour(), DEC);
//      Serial.print(':');
//      Serial.print(now.minute(), DEC);
//      Serial.print(':');
//      Serial.print(now.second(), DEC);
//      Serial.print(' ');

    // Internet Function
    if (client.available()) {
      char c =;
    if (!client.connected()) {
      RH = RH+1;//temporary

Can anyone help me solve this or give me suggestions? just ask if I need to give more information.

Thank you!

    if (client.available()) {
      char c =;

Presumably it is not the actual printing that takes the time but the testing to see whether the client is available, the acquisition of the data using, oh, and the 3 second delay between characters, of course.

I will take out the delay, and get back to you. It was my understanding that the delay happens after the entire serial print. None the less I will try it.

Also I am confused as to why the takes long to respond from the server, because when I take the code for temperature out it responds instantly.

Thank you for helping.

removing the delay does give me a response time of about 3 seconds per letter(thank you @UKHeliBob) . This is an improvement but still does not explain why it is taking so long. Like I said above, without the temperature probe code the entire prints in 3 seconds flat.

Can anyone help me reduce the time further or explain why it takes so long?

What about the 3 second delay at the start of loop()?

Or reading in one go, rather than a char per loop of loop():

while( client.available() > 0 ){
  Serial.print( );

Thank you! That sped the process tremendously!

Serial.print will only do the number that interprets, however if I put Serial.write and use a while like you suggested, the text prints instantaneously.

Also this link helped organize my code:

I am a beginer at arduino and have really sloppy mostly pieced together code. Thank you for helping me once again!