Does it post data to Thingspeak properly if you remove the server.handleClient(); from the main loop?
Does it serve local clients if you comment out the Thingspeak update section in the main loop?
One of the issues you have is that the server will only check for incoming requests every 10 seconds so your local clients may timeout waiting. You need to eliminate delay() so the clients get handled quickly. See the Doing several things at once post on the arduino forum and the "Blink without delay" example in the Arduino IDE.