title: Arduino module esp8266 returns bad request
body: <p>I am testing the wifi module esp8266 with my arduino uno.
  I made it work with direct connection RX/TX and through softwareserial.</p>
  
  <p>This is my code:</p>
  
  <pre><code>#include &lt;SoftwareSerial.h&gt;
  SoftwareSerial esp8266(3, 2); // RX | TX
  
  #define DEBUG true
  
  int ERROR_PIN = 7;
  int OK_PIN = 6;
  
  char serialbuffer[400];//serial buffer for request url
  const String ssid = "XXX";
  const String pw = "XXX";
  
  int state = 0;
  
  void setup() 
  {
      delay(1000);
      /**
      // init leds
      pinMode(ERROR_PIN, OUTPUT);
      pinMode(OK_PIN, OUTPUT);
  
      state = 0;
  
      digitalWrite(ERROR_PIN, HIGH);
      digitalWrite(OK_PIN, LOW);
      /**/
      // init ports
      Serial.begin(19200);
      Serial.println("initializing esp8266 port...");
      esp8266.begin(19200);
      delay(400);
      // init WIFI
      /**/
      while(!esp8266.available())
      {
          Serial.print("...");
          delay(300);
      }
      Serial.println();
      Serial.println("FINISH esp8266 initializing!");
      //
      /**
      digitalWrite(ERROR_PIN, LOW);
      digitalWrite(OK_PIN, HIGH);
      state = 1;
      /**/
      /**/
      // Setup connection
      sendData("AT+RST\r\n",2000,DEBUG);
      sendData("AT+CWMODE?\r\n",1000,DEBUG);
      //sendData("AT+CWMODE=1\r\n",2000,DEBUG);
      //sendData("AT+RST\r\n",3000,DEBUG);
      //sendData("AT+CWLAP\r\n",6000,DEBUG);
      sendData("AT+CWJAP=\"" + ssid + "\",\""+ pw +"\"\r\n",12000,DEBUG);
      sendData("AT+CIFSR\r\n",8000,DEBUG);
      sendData("AT+CIPMUX=1\r\n", 6000, DEBUG);
      webRequest("");
      /**/
      /**/
  }
  
  void loop() 
  {
      if (esp8266.available())
      {
          char c = esp8266.read() ;
          Serial.print(c);
          /**
          if(state == 0)
          {
              state = 1;
              digitalWrite(ERROR_PIN, LOW);
              digitalWrite(OK_PIN, HIGH);
          }
          /**/
      }
      else
      {
          /**
          if(state &gt; 0)
          {
              state = 0;
              digitalWrite(ERROR_PIN, HIGH);
              digitalWrite(OK_PIN, LOW);
          }
          /**/
      }   
      if (Serial.available())
      {  
          char c = Serial.read();
          esp8266.print(c);
      }
  }
  
  //////////////////////////////////////////////////////////////////////////////
  String sendData(String command, const int timeout, boolean debug)
  {
      String response = "";
      esp8266.print(command); // send the read character to the esp8266
      long int time = millis();
      while( (time+timeout) &gt; millis())
      {
          while(esp8266.available())
          {
              // The esp has data so display its output to the serial window
              char c = esp8266.read(); // read the next character.
              response+=c;
          }
      }
      if(debug)
      {
          Serial.print(response);
      }
      return response;
  }
  //////////////////////////////////////////////////////////////////////////////////
  String webRequest(String url)
  {
      String response = "";
      url = "www.google.es";
      //String tmpCommand = "AT+CIPSTART=4," + "\"TCP\",\"" + url + "\",80";
      String tmpSTARTCommmand = "AT+CIPSTART=0,\"TCP\",\"retro.hackaday.com\",80\r\n\r\n";
      String tmpGETCommand = "GET / HTTP/1.1\r\nHost: "; 
      tmpGETCommand += "retro.hackaday.com";
      tmpGETCommand += ":80\r\n\r\n";
      String tmpSENDCommand = "AT+CIPSEND=0," + String(tmpGETCommand.length()) + "\r\n";
      sendData(tmpSTARTCommmand, 8000, DEBUG);
      sendData(tmpSENDCommand, 8000, DEBUG);
      sendData(tmpGETCommand, 15000, DEBUG);
  }
  </code></pre>
  
  <p>This works until the point where I do the webrequest. I receive a Bad request response.</p>
  
  <pre><code>initializing esp8266 port...
  .........
  FINISH esp8266 initializing!
  BâÂúØÐPÊþ^X8Â�Ä^Âú[8ÐûÈâ·CâËØè[8Ð{Èâ·GâÃØRÈèš‰5˜‰0
  bÕ
  ready
  AT+CWMODE?
  +CWMODE:3
  
  OK
  AV®)AB•«Ë—mX·et","XXX"
  
  OK
  AT+CIFSR
  +CIFSR:APIP,"192.168.4.1"
  +CIFSR:APMAC,"1a:fe:34:9b:c3:83"
  +CIFSR:STAIP,"192.168.1.89"
  +CIFSR:STAMAC,"18:fe:34:9b:c3:83"
  
  OK
  AT+CIPMUX=1
  
  OK
  AV%AMEÕÕ*$‘²troÐ…�‘½µ‰,80
  0,CONNECT
  
  OK
  AVCIPSEND=0,47
  &gt; GE@/!QQAŠrŠ%åõÑ: ÊÑÉ½B�……¹½µÂ‚%\n\r\nbusy s...
  
  SEND OK
  
  +IPD,0,323:HTTP/1.1 400 Bad Request
  Server: nginx/1.6.2
  Date: Sat, 04 Apr 2015 16:17:29 GMT
  Content-Type: text/html
  Content-Length: 172
  Connection: close
  
  &lt;html&gt;
  &lt;head&gt;&lt;title&gt;400 Bad Request&lt;/title&gt;&lt;/head&gt;
  &lt;body bgcolor="white"&gt;
  &lt;center&gt;&lt;h1&gt;400 Bad Request&lt;/h1&gt;&lt;/center&gt;
  &lt;hr&gt;&lt;center&gt;nginx/1.6.2&lt;/center&gt;
  &lt;/body&gt;
  &lt;/html&gt;
  
  OK
  "qXÑzÂC!É1âø‚h[•�™cü    ÐQ!}Ñfócú   I]Ø÷ÃBj 1¤(ÑÃÖa”K!~CóbÕ
  ready
  </code></pre>
  
  <p>Any idea?</p>