Il metodo ReadAsStringAsync è asincrono: quello che leggi non è il risultato, bensì il task che è stato avviato su un thread separato e che sta gestendo l'operazione in modo parallelo al flusso principale del programma.

Devi usare la parola chiave await oppure fare Wait sull'oggetto Task per ottenere la risposta nel momento in cui l'operazione è terminata.

Ciao!