Reading +IPD response from serial.read() using Arduino UNO and ESP8266

groundFungus:
I am not sure which 2 you mean. Can you post the codes that you mean?

I read that the Serial buffer can only hold 64 bytes at a time. So when i run this code:

   esp.println("AT+CWLAP");
   delay(1000);
   String str="";
  while (esp.available()>0) {
    i3+= esp.readString();
    }
 Serial.print(str);

I get the following output:

AT+CWLAP
+CWLAP:(4,"MBB_ZONG_25C7",-79,"78:52:62:29:25:c7",1,43)
+CWLAP:(3,"ZONG-MBB-E8372-470D",-46,"bc:75:74:a6:47:0d",7,50)
+CWLAP:(3,"rafaynet",-84,"b0:4e:26:07:28:78",2,36)
+CWLAP:(3,"citytt060",-60,"a4:2b:b0:a1:8a:ea",2,43)
+CWLAP:(3,"CharJi-8A3D",-82,"c0:5e:79:ff:8a:3d",6,147)
+CWLAP:(3,"PTCL-QADRI.",-93,"00:e0:92:00:01:40",8,25)
+CWLAP:(4,"Tenda_97B660",-70,"c8:3a:35:97:b6:60",8,46)

which is clearly greater than 64 bytes.
But when i connect to my server and send it a input string like this:

esp.println("AT+CIPSEND=3");
delay(100);
String i4="";   
 while (esp.available()>0) {
   i4+= esp.readString();       //this is done just to flush out the serial buffer so i can get the data i want
 }
esp.println("bbb");    // i need to store in a variable the response of the server the arduino receives when i give the server a stringlike this 
delay(100);
String i5="";
char c; 
while (esp.available()>0) {
   c= esp.read(); 
   i5+=c;
 }
Serial.print(i5);

I get the following result stored in i5 :

busy s...
Recv 3 bytes
SEND OK
+IPD,19:the string i

where as it should have been +IPD,19:the string is found

This is where i am stuck, i can not get this whole string into a variable to use in my code.