Problema get response ESP8266

Ciao a tutti!
Come da titolo ho un problema quando esegue il comando AT+CIPSEND per ottenere la risposta e salvara in un'apposita variabile di tipo string, non mi viene salvata tutta ma solo la prima parte, anche per riposte piccole tipo di lunghezza 500.Se invece di salvare la risposta in una variabile stringa stampo direttamente byte per byte sulla porta seriale allora mi viene visualizzato tutto il contenuto, solo che io ho estremamente bisogno di salvare la risposta perchè contiene un json e lo devo parsare,ho provato anche comprare un altro arduino credendo fosse un difetto di fabbrica ma niente...
Qualche consiglio?
Grazie mille in anticipo!

Ah dimenticavo vi posto la funzione magari vi può aiutare a risolvere il mio problema:

String send_AT_ESP8266(String command,int wait,String lastStr)
 {

char readByte;
String responseSTR = "";


esp8266.println(command);



int findLastStr;
unsigned long timeout;

  
continua:

 

timeout = millis() + wait;
  
while (esp8266.available() == 0)
  {
   findLastStr = responseSTR.indexOf(lastStr);
   
   if ((millis() > timeout) || (findLastStr >= 0) ) 
   {
   if (findLastStr >= 0)
    Serial.println("+++++++++++++++++++++++++++++++++++++++++++++++++++");
   else
    Serial.println("---------------------------------------------------");

     if(DEBUG) // se la modalita debug è attiva
      Serial.println(responseSTR);
 
     delay(100);


     return responseSTR;


   }
  }
 
  while(esp8266.available() ) 
  {  
    readByte = esp8266.read(); // leggo un byte
    responseSTR.concat(readByte);//+= readByte;  
  }

goto continua; 

 }

Perché non usi l'ottima libreria già esistente, per interfacciarti con l'ESP?

Dall'esempio "webclient" che c'è in quella libreria mi da lo stesso problema, ovvero:
una volta connesso al wifi dopo aver stabilito la connessione col server, fa la GET su www.arduino/asciilogo.txt ; successivamente entra nella funzione loop che stampa direttamente sulla porta seriale appena riceve qualcosa, come di seguito:

while (client.available()) {
    char c = client.read();
    Serial.write(c);
}
  }

Il mio problema è che io me la devo salvare questa risposta e quindi modificando il codice in una roba simile:

String dati = "";
void loop()
{
  // if there are incoming bytes available
  // from the server, read them and print them
  while (client.available()) {
    char c = client.read();
    dati+= c;
    
  //  Serial.write(c);
  }

ecc...
}

ed infine stampando il contenuto di dati, come mi aspettavo mi da lo stesso identico errore cioè mi stampa solo la prima parte della risposta, come in allegato.

Qualche consiglio?
Thxx

Hai provato a vedere che succede usando un vettore di char al posto di una stringa?