ESP8266 error using GET HTTP/1.1 408 Request Timeout

Hello every one

I have been trying to get my esp8266 to send data to my php server using the AT commands, but i can only get libraries to send data so far or just AT cmd hotspots or local networks just not posting data.

My php server and script works fine i know php well and the esp works fine i can send data using many types of esp libraries, but i want to keep my sketch size minimal so AT commands is what i want to use, here what i am putting into the serial monitor and the esp responses:

What am i doing wrong ?

Cheers from ed.

AT

OK

AT+CWMODE=3

OK

AT+CWJAP="VM0142828","htnc9WcBfwjp"

WIFI CONNECTED
WIFI GOT IP

OK

AT+CIPMUX=1

OK

AT+CIPSTART=0,"TCP","www.southamptonstudentrooms.com",80

0,CONNECT

OK

AT+CIPSEND=0,69

OK

GET /Assignment/esppost.php?temp=12&hum=60&fan1=69&fan2=15 HTTP/1.1

Recv 69 bytes

SEND OK

+IPD,0,391:HTTP/1.1 408 Request Timeout
Date: Sun, 27 Aug 2017 14:47:25 GMT
Server: Apache
Content-Length: 221
Connection: close
Content-Type: text/html; charset=iso-8859-1

408 Request Timeout

Request Timeout

Server timeout waiting for the HTTP request from the client.

0,CLOSED

You didn't finish the header by sending CRLF CRLF, the server keeps waiting for these characters, doesn't receive them, and times out.
You are also missing some necessary header fields.
RFC2616 §5: Request

A request message from a client to a server includes, within the
first line of that message, the method to be applied to the resource,
the identifier of the resource, and the protocol version in use.

Request = Request-Line ; Section 5.1
*(( general-header ; Section 4.5
| request-header ; Section 5.3
| entity-header ) CRLF) ; Section 7.1
CRLF
[ message-body ] ; Section 4.3

The Request-Line begins with a method token, followed by the
Request-URI and the protocol version, and ending with CRLF. The
elements are separated by SP characters. No CR or LF is allowed
except in the final CRLF sequence.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

RFC7230 §5.4: Host

The "Host" header field in a request provides the host and port
information from the target URI, enabling the origin server to
distinguish among resources while servicing requests for multiple
host names on a single IP address.

Host = uri-host [ ":" port ] ; Section 2.7.1

A client MUST send a Host header field in all HTTP/1.1 request
messages.

[...]

Since the Host field-value is critical information for handling a
request, a user agent SHOULD generate Host as the first header field
following the request-line.

RFC7230 §6.1: Connection

The "close" connection option is defined for a sender to signal that
this connection will be closed after completion of the response. For
example,

Connection: close

in either the request or the response header fields indicates that
the sender is going to close the connection after the current
request/response is complete (Section 6.6).

A client that does not support persistent connections MUST send the
"close" connection option in every request message.

Pieter

Could you please show me the correct format within my Get command please i have been trying all day, when i place in the header i get error 400 instead or 308 if i miss out the entier header, also i have tried HTTP/1.0 which i see used a lot for the esp8266.

GET /Assignment/esppost.php?temp=12&hum=60&fan1=69&fan2=15 HTTP/1.1 \r\n Host: southamptonstudentrooms.com Connection: close

( general-header | request-header | entity-header ) means either a "general-header" OR a "request-header" OR an "entity-header".
*( ... ) means a repetition of zero or more times whatever is between the parentheses.
[ ... ] means that whatever is between the square brackets is optional.

      Request       = Request-Line              ; Section 5.1

*(( general-header        ; Section 4.5
                        | request-header        ; Section 5.3
                        | entity-header ) CRLF)  ; Section 7.1
                        CRLF
                        [ message-body ]          ; Section 4.3

Note that the CRLF is between the parentheses of the repetition, so you need it after each header. Then you need an additional CRLF after the last header.
(CRLF = Carriage Return + Line Feed = "\r\n")

Pieter