Respuesta HTTP como String

Hola a todos, estoy realizando un proyecto donde necesito almacenar una variable que contenga la parte BODY de un documento web especificamente la pagina responde con una cadena del tipo JSON que estoy intentando descifrar una vez recibida la respuesta del sitio, para ello tengo este codigo que recopile pero no me funciona del todo bien.

Quisiera su ayuda si es posible que alguien pudiera sugerirme si es posible simplificarlo todo con una funcion que me devuelva en una variable el resultado de la parte BODY de un sitio web. Algo por ejemplo como esto

String RespuestaHttp;

 RespuestaHttp = ConsultaWeb("www.google.com");

Como se ve mi intencion es que la funcion devuelva el contenido del Body de la pagina y quede cargado en una variable de manera que luego pueda trabajar con esos datos como si fuera una sola tira de texto. (estoy dispuesto a brindar compensación economica a quien pueda colaborarme con esto)

La función podria ser mejorada para definir si recibir datos como GET o enviar como POST pero en principio sería como GET . He buscado por la web pero no he encontrado un ejemplo de una función o libreria que trabaje de esta forma, seria realmente útil contar con una solucion rapida como esta para implementar en proyectos.

En el siguiente codigo estoy definiendo el char RespuestaHttp como global?? pero no funciona como lo deseo, en teoria mi idea es que almacene el resultado de http.read(); que seria la parte Body del documento web y la deje guardada en esa variable una vez ejecutada la función y pueda hacer uso de esos datos desde otro punto del sketch para consultar o trabajar con esa información, pero sucede que la variable char siempre se queda en limpio, como si no guardara nada.

¿Alguien podria ayudarme a guardar el resultado de http.read() completo en una variable y acceder a este desde fuera de la función como una tira de texto, puede ser un string

// (c) Copyright 2010-2012 MCQN Ltd.
// Released under Apache License, version 2.0
//
// Simple example to show how to use the HttpClient library
// Get's the web page given at http://<kHostname><kPath> and
// outputs the content to the serial port

#include <SPI.h>
#include <HttpClient.h>
#include <Ethernet2.h>
#include <EthernetClient.h>



// Name of the server we want to connect to
  
 String kHostname = "echo.jsontest.com";
 
// Path to download (this is the bit after the hostname in the URL
// that you want to download


   String kPath = "/key/value/one/two";



 
   char RespuestaHttp;


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

// Number of milliseconds to wait without receiving any data before we give up
const int kNetworkTimeout = 30*1000;
// Number of milliseconds to wait if no data is available before trying again
const int kNetworkDelay = 1000;

void setup()
{
  // initialize serial communications at 9600 bps:
  Serial.begin(9600); 


  while (Ethernet.begin(mac) != 1)
  {
    Serial.println("Error getting IP address via DHCP, trying again...");
    delay(15000);
  }  


   char *myServer = kHostname.c_str();
    char *myPath = kPath.c_str();
   

 ConsultaHttp(myServer, myPath);


delay(6000);

  

 
}

void ConsultaHttp(int ServerHost, int ServerPath)
{


  int err =0;
 
  
  EthernetClient c;
  HttpClient http(c);
  
  err = http.get(ServerHost, ServerPath);
  if (err == 0)
  {
    Serial.println("startedRequest ok");

    err = http.responseStatusCode();
    if (err >= 0)
    {
      Serial.print("Got status code: ");
      Serial.println(err);

      // Usually you'd check that the response code is 200 or a
      // similar "success" code (200-299) before carrying on,
      // but we'll print out whatever response we get

      err = http.skipResponseHeaders();
      if (err >= 0)
      {
        int bodyLen = http.contentLength();
        Serial.print("Content length is: ");
        Serial.println(bodyLen);
        Serial.println();
        Serial.println("Body returned follows:");
      
        // Now we've got to the body, so we can print it out
        unsigned long timeoutStart = millis();
        char c;
        // Whilst we haven't timed out & haven't reached the end of the body
         while ( (http.connected() || http.available()) )

      {
            if (http.available())

            {
           
                
              
                c = http.read();
               
                // Print out this character
                 Serial.print(c);

                 String str(c);

   // Serial.print(str);

              
               
                bodyLen--;
                // We read something, reset the timeout counter
                timeoutStart = millis();
              
              
            }
            else
            {
                // We haven't got any data, so let's pause to allow some to
                // arrive
                delay(kNetworkDelay);
                
            }

           
       }
           
        
        
      }
      else
      {
        Serial.print("Failed to skip response headers: ");
        Serial.println(err);
      }
    }
    else
    {    
      Serial.print("Getting response failed: ");
      Serial.println(err);
    }
  }
  else
  {
    Serial.print("Connect failed: ");
    Serial.println(err);
  }
  http.stop();
 
  // And just stop, now that we've tried a download
  while(1);
  
}


void loop() {
Serial.println(RespuestaHttp);
  
}