PageRenderTime 50ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/AsyncRss/RssPage.aspx.cs

https://github.com/hmol/OtherCode
C# | 104 lines | 86 code | 18 blank | 0 comment | 10 complexity | ba3b91b23050d7fc5f0445080436e9dd MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7. using System.Web.Services;
  8. using System.Web.Script.Services;
  9. using System.Configuration;
  10. using System.IO;
  11. using System.Net;
  12. using System.Web.Script.Serialization;
  13. using System.Xml.Linq;
  14. public partial class RssPage : System.Web.UI.Page
  15. {
  16. protected void Page_Load(object sender, EventArgs e)
  17. {
  18. }
  19. [WebMethod]
  20. [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
  21. public static string DownloadRssFeed(string inputUrl)
  22. {
  23. if (string.IsNullOrWhiteSpace(inputUrl))
  24. return string.Empty;
  25. var rssUrl = inputUrl;
  26. if (string.IsNullOrWhiteSpace(rssUrl))
  27. return string.Empty;
  28. try
  29. {
  30. var webRequest = (HttpWebRequest)WebRequest.Create(rssUrl);
  31. using (var webResponse = (HttpWebResponse)webRequest.GetResponse())
  32. {
  33. using (var streamReader = new StreamReader(webResponse.GetResponseStream()))
  34. {
  35. var feed = XDocument.Load(new StringReader(streamReader.ReadToEnd()));
  36. var rssDeclaration = feed.Descendants("rss");
  37. var rssFeedResult = new List<RssFeedItem>();
  38. foreach (var item in feed.Descendants("item"))
  39. {
  40. if (item == null) continue;
  41. var title = item.Element("title");
  42. if (title == null || string.IsNullOrWhiteSpace(title.Value)) continue;
  43. var url = item.Element("link");
  44. if (url == null || string.IsNullOrWhiteSpace(url.Value)) continue;
  45. rssFeedResult.Add(new RssFeedItem()
  46. {
  47. Title = title.Value,
  48. Url = url.Value
  49. });
  50. }
  51. return new JavaScriptSerializer().Serialize(rssFeedResult);
  52. }
  53. }
  54. }
  55. catch (Exception e)
  56. {
  57. throw new Exception(e.Message);
  58. }
  59. }
  60. [WebMethod]
  61. [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
  62. public static string GetRssItems()
  63. {
  64. var feedList = new List<RssFeedItem>();
  65. feedList.Add(new RssFeedItem(){
  66. Title="Le Monde" ,
  67. Url = "http://rss.lemonde.fr/c/205/f/3061/index.rss"
  68. });
  69. feedList.Add(new RssFeedItem()
  70. {
  71. Title = "New York Times",
  72. Url = "http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml"
  73. });
  74. feedList.Add(new RssFeedItem()
  75. {
  76. Title = "Shanghai daily",
  77. Url = "http://rss.shanghaidaily.com/Portal/mainSite/handler.ashx?template=template&filename=latestnews&foldername=mainSite&sid=id"
  78. });
  79. return new JavaScriptSerializer().Serialize(feedList);
  80. }
  81. private class RssFeedItem
  82. {
  83. public string Url { get; set; }
  84. public string Title { get; set; }
  85. }
  86. }