Manually parsing HTTP response header
This is a bit surprising:


stringBuilder.setLength(0);



Seeing the posted code starting with this is fishy,
as it suggests that there is more code before it,
and that the method is not decomposed enough,
and should be multiple methods instead.



This is a bit surprising:


    final char read = (char) reader.read();
    if (read &lt; 1) {



The read() method returns -1 in case of EOF.
I suggest to change this check to read &lt; 0 or read == EOF to avoid making reviewers ponder.




        MiscUtils.closeAndIgnore(socket, reader);



A common name for this kind of thing is closeQuietly,
usually in a utility class called IOUtils (in Apache commons, for example).
I suggest to follow that good example.
MiscUtils is a bad idea.




    if (read == '\n')
        break; //status header fetched



It's recommended to use braces always, even with single-statement expressions like this.




if (!(status.contains("200") || status.contains("206"))) {



I'd go for the more strict and compact regular expression check:

if (!status.matches("HTTP/.* 20[06] .*")) {




It would be good to split the posted code to two methods:


A method that consumes the status line (the first line)
A method that consumes the remaining lines