Arduino is not reading data from server

Hello! I have managed to send the packet to my server but it’s not returning the string. Any heads up where i went wrong with my code? Thanks in advance

#include <SoftwareSerial.h>

String ssid ="asdasd";
String password="asdasd";  

SoftwareSerial esp(2, 3);// RX, TX
////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////

String server = "pmsfeeder.com";
String location = "\retrieveInfo.php";
String data;
char inString[32]; // string for incoming serial data
int stringPos = 0; // string index counter
boolean startRead = false; // is reading?

void setup(){
    esp.begin(9600);
    Serial.begin(9600);
    connectWifi();
}

void loop(){
  String pageValue = connectAndRead(); //connect to the server and read the output
  Serial.println(pageValue); //print out the findings.
  delay(5000); //wait 5 seconds before connecting again
}

String connectAndRead(){
  //connect to the server

  enableconn();
  Serial.println("connecting...");
  String cmd2 = "AT+CIPSTART=2\"TCP\",\"" + server + "\",80";
    esp.println(cmd2);
    delay(4000);
    if (esp.find("OK"))
      {
        Serial.println("TCP Connection Ready.");       
      }

       String postRequest =
            "GET" + location + "HTTP/1.1\r\n" +
            "Host:" + server + "\r\n" +
            "Accept: *" + "/" + "*\r\n" +
            "Content-Type: application/x-www-form-urlencoded\r\n" +
            "\r\n" + data;
      
       String cmd4 = "AT+CIPSEND=2,18";
       esp.println(cmd4);
       esp.println(postRequest.length());
       delay(4000);

        if (esp.find(">"))
        {
           Serial.println("Sending...");
           delay(1200);
           esp.println(postRequest);

          if (esp.find("SEND OK"))
          {
            Serial.println("Packet sent");
            return readPage();
          }
          else
          {
            Serial.println("Connection failed");
          }
           
        }

}

String readPage(){
  //read the page, and capture & return everything between '<' and '>'

  stringPos = 0;
  memset( &inString, 0, 32 ); //clear inString memory

  while(true){

    if (esp.available()) {
      char c = esp.read();

      if (c == '<' ) { //'<' is our begining character
        startRead = true; //Ready to start reading the part 
      }else if(startRead){

        if(c != '>'){ //'>' is our ending character
          inString[stringPos] = c;
          stringPos ++;
        }
        else{
          //got what we need here! We can disconnect now
          startRead = false;
          return inString;
        }
      }
    }

  }
}

void connectWifi()
  {
                           
    String cmd = "AT+CWJAP=\"" +ssid+"\",\"" + password + "\"\r\n";
    esp.println(cmd);
    delay(5000);
    
    if(esp.find("OK"))
      {
        Serial.println("Connected!");
        connectAndRead();
      }
    
    else
      {
        Serial.println("Cannot connect to wifi");
        connectWifi();
      }

  }

void enableconn()
  {
    String cmd1 = "AT+CIPMUX=1";
    esp.println(cmd1);
    delay(4000);
    if (esp.find("OK"))
      {
      Serial.println("Ok");
      }
     else
      {
        Serial.println("Cannot enable multiple connections");
      }

  }

Didn't look through all code but noticed this strange "\retreiveInfo.php" which begins with a carriage-return

String location = "\retrieveInfo.php";

Are you sure it shouldn't be "/retrieveInfo.php" ?

PS I don't know how software serial handles input but if you so often delay() for 4 seconds between writing and checking for input from serial line, I'm quite convinced this may lose quite a few bytes received from ESP.

There is no flow control on these simple serial interfaces.

I'd strongly suggest that you use Ivan Grokhotkov's ESP8266 Arduino Core, it's absolutely superiour over AT commands. This enables you to program the ESP directly, without the need of an extra Arduino, and it has the best WiFi support.
Also, in most cases, there's no real reason to write your own request headers (unless you're doing it for learning purposes). I'd use the appropriate HTTP classes that come with the WiFi libraries in the ESP core.
Another remark would be the use of the String class: because you are not using any of its special string manipulation functions, it would be better to use an array of chars. You may get memory fragmentation and random crashes in the long run, since the String class uses dynamic memory allocation.

It may be quite a lot of work to rewrite all your code, but I think it's well worth the effort!
Not a real answer to your questions, but I hope this helps anyway.

Pieter