Как я могу получить доступ к телу ответа Angular 2 http без преобразования его в строку или json?

private static string WebRequestPostData(string url, string postData)
{
    System.Net.WebRequest req = System.Net.WebRequest.Create(url);

    req.ContentType = "text/xml";
    req.Method = "POST";

    byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postData);
    req.ContentLength = bytes.Length;

    using (Stream os = req.GetRequestStream())
    {
        os.Write(bytes, 0, bytes.Length);
    }

    using (System.Net.WebResponse resp = req.GetResponse())
    {
        if (resp == null) return null;

        using (System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream()))
        {
            return sr.ReadToEnd().Trim();
        }
    }
}
23
задан sschueller 18 March 2016 в 14:55
поделиться

3 ответа

Существует гораздо более простое решение для доступа к телу в виде строки, которую я нигде не видел в документации:

let body = res.text()
48
ответ дан StudioLE 18 March 2016 в 14:55
поделиться

Поскольку я нашел этот вопрос, столкнувшись с той же проблемой (и документация Angular не обновляется на сегодняшний день), теперь вы можете использовать:

let blob = new Blob([response.arrayBuffer()], { type: contentType });

Другой обходной путь, если вы по какой-то причине находитесь на старой Версия Angular 2:

let blob = new Blob([(<any> response)._body], { type: contentType });
6
ответ дан dmungin 18 March 2016 в 14:55
поделиться

Я не вижу других решений до слияния следующего PR:

В то время как у вас есть ошибка компиляции, поле может использоваться во время выполнения ...

1
ответ дан Thierry Templier 18 March 2016 в 14:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: