Read::read accepts &mut [u8], not &mut Vec<u8>. To read to end, use Read::read_to_end instead which accepts &mut Vec<u8>. Also, because you are reading to string, you may also consider using Read::read_to_string.
Beware that .read() returns a Result that you should check. On success the result contains the number of bytes read. Which may be less than the size of the given buffer.