@Override
    public String getBodyString() {
        synchronized (this) {
            ByteArrayOutputStream temp = new ByteArrayOutputStream();
            try {
                if (body == null && inStream != null) {
                    byte[] buf = new byte[4096];
                    int len;
                    while ((len = inStream.read(buf)) >= 0) {
                        temp.write(buf, 0, len);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace(); // TODO: logger
            } finally {
                try {
                    inStream.close();
                } catch (IOException ignored) {
                }
            }
            body = temp.toByteArray();
        }

        try {
            if (body != null) {
                return new String(body, "utf8");
            } else {
                return "";
            }
        } catch (UnsupportedEncodingException ignored) {
        }
        return "";
    }