Ошибки в основном идеологические, то есть от лени и неправильного подхода к проблеме.
Если хочешь чтобы тебе отвечали то оформляй исходники в соответствии со стандартом http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html и пиши не кусок кода выдранный из контекста а законченный класс с методом main.
Исключения придуманы не просто так. Не игнорируй их, иначе легко пропустить ошибку. Перед тем как реализовывать сетевой протокол нужно прочитать стандарт описывающий этот протокол. Этот код не соответствует стандарту HTTP (ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt), от того он и не работает.
Открой стандарт и найди какими символами должен завершаться HTTP-запрос. Этот вовсе не \0, а последовательность CRLF. Кроме того каждая строка запроса так же должна заканчиваться последовательностью CRLF. Итого в конце должно стоять два CRLF подряд.