Seems like this was just a timing issue. So if anybody having similar problems then adding delay(200);
before WiFlyClient client = server.available();
then everything should work just fine.
Heres the full working code:
/*
* Web Server
*
* (Based on Ethernet's WebServer Example)
*
* A simple web server that shows the value of the analog input pins.
*/
#include <SPI.h>
#include <WiFly.h>
#include "Credentials.h"
WiFlyServer server(80);
void setup() {
WiFly.begin();
if (!WiFly.join(ssid, passphrase)) {
while (1) {
// Hang on failure.
}
}
Serial.begin(9600);
Serial.print("IP: ");
Serial.println(WiFly.ip());
server.begin();
}
void loop() {
delay(200);
WiFlyClient client = server.available();
if (client) {
Serial.println("We have a client!");
// an http request ends with a blank line
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.print(c);
// if we've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so we can send a reply
if (c == '\n' && current_line_is_blank) {
Serial.println("Request ended, send data back");
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.println("Hello World");
client.stop();
break;
}
if (c == '\n') {
// we're starting a new line
current_line_is_blank = true;
} else if (c != '\r') {
// we've gotten a character on the current line
current_line_is_blank = false;
}
}
}
// give the web browser time to receive the data
delay(200);
client.stop();
Serial.println("Client stopped");
}
}