Сбой WebRequest и потокового чтения на URL фида атомов - PullRequest
0 голосов
/ 21 февраля 2012
    Stream FeedReader(string url_)
    {
        var url = url_;

        var USER = "user";
        var PASS = "password";


        var encoded = TextToBase64(USER + ":" + PASS);

        WebRequest myWebRequest = WebRequest.Create(url);
        myWebRequest.Method = "POST";
        myWebRequest.ContentType = "application/x-www-form-urlencoded";
        myWebRequest.PreAuthenticate = true;
        NetworkCredential netCred = new NetworkCredential(USER, PASS);
        myWebRequest.Credentials = netCred;            

        //WebResponse response = myWebRequest.GetResponse();
        var stream = myWebRequest.GetRequestStream();
        return stream;
    }

Я использую приведенный выше исходный код для получения потока подачи атома, который затем передается в следующую функцию

    public static List<Item> ParseAtom2(Stream stream)
    {
        XDocument doc = XDocument.Load(stream);//("atom.xml");
        XNamespace ns = "http://www.w3.org/2005/Atom";

        var entries = doc.Root
             .Elements(ns + "entry")
             .Select(item => new Item
             {
                 FeedType = FeedType.Atom,
                 Content = (string)item.Element(ns + "content"),
                 Link = (string)item.Element(ns + "link").Attribute("href"),
                 PublishDate = (DateTime)item.Element(ns + "published"),
                 Title = (string)item.Element(ns + "title")
             });
        return entries.ToList();
    }

Я, однако, получаю сообщение о том, что поток в нечитабельном виде, я хотел быхотел бы знать, в чем может быть проблема.URL подачи атома выглядит следующим образом http://server.com/posts.atom.xml/

1 Ответ

0 голосов
/ 21 февраля 2012

Вы возвращаете RequestStream, он содержит данные, которые будут отправлены на сервер, поэтому вы не можете ничего с него прочитать, попробуйте использовать myWebRequest.GetResponse().GetResponseStream()

...