2011-11-25 54 views
0

我目前使用google feed api來動態獲取Feed鏈接。我試圖使用api返回的結果來創建我的網站rss飼料..現在問題是api函數調用發生只有頁面加載後,所以我不能訪問頁面加載函數中的api返回的url值..如何訪問頁面加載時由google feed api返回的值?

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 
    <script type="text/javascript" src="https://www.google.com/jsapi?key=ABQIAAAAxII5vpTAk5gatTPIMAFoCxStIDvCAqMV0_KActMytIL1qEezxxQeBqRzIurcFfnrUgG2YMlC07VgbQ"></script> 
    <script type="text/javascript"> 

     google.load("feeds", "1", { "callback": OnLoad }); 

     function OnLoad() { 
      // Query for president feeds on cnn.com 
      var query = 'atlanta bridal shows'; 
      google.feeds.findFeeds(query, findDone); 
     } 

     function findDone(result) { 
      // Make sure we didn't get an error. 
      if (!result.error) { 
       // Get content div 
       var content = document.getElementById('content'); 
       var html = ''; 
       var submenu = new Array() 
       // Loop through the results and print out the title of the feed and link to 
       // the url. 
       for (var i = 0; i < result.entries.length; i++) { 
        var entry = result.entries[i]; 
        html += '<p><a href="' + entry.url + '">' + entry.title + '</a></p>'; 
        submenu[i] = entry.url; 
       } 
       content.innerHTML = html; 

       document.getElementById('<%= Hidden1.ClientID %>').value = submenu; 
      } 
     } 

     google.setOnLoadCallback(OnLoad); 
    </script> 

</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> 
<asp:HiddenField ID="Hidden1" runat="server" ondatabinding="Hidden1_DataBinding" 
     onunload="Hidden1_Unload" onvaluechanged="Hidden1_ValueChanged" /> 
<div id="content"></div> 

</asp:Content> 

頁面加載事件:

protected void Page_Load(object sender, EventArgs e) 
    { 
     WebClient client = new WebClient(); 
     string path = Request.Url.GetLeftPart(UriPartial.Authority) + 
       VirtualPathUtility.ToAbsolute("~/user/feed.htm"); 

     Stream stream = client.OpenRead(path); 
     StreamReader sr = new StreamReader(stream); 
     string content = sr.ReadToEnd(); 

      } 

我應該怎麼做才能訪問在頁面加載API返回的值?

回答

1

首先,您必須創建feed.htm並將上面的代碼放入其中。

feed.htm(其位於web應用的根)

<script type="text/javascript" src="https://www.google.com/jsapi?key=ABQIAAAAxII5vpTAk5gatTPIMAFoCxStIDvCAqMV0_KActMytIL1qEezxxQeBqRzIurcFfnrUgG2YMlC07VgbQ"></script> 
<script type="text/javascript"> 

    google.load("feeds", "1", { "callback": OnLoad }); 

    function OnLoad() { 
     // Query for president feeds on cnn.com 
     var query = 'atlanta bridal shows'; 
     google.feeds.findFeeds(query, findDone); 
    } 

    function findDone(result) { 
     // Make sure we didn't get an error. 
     if (!result.error) { 
      // Get content div 
      var content = document.getElementById('content'); 
      var html = ''; 
      var submenu = new Array() 
      // Loop through the results and print out the title of the feed and link to 
      // the url. 
      for (var i = 0; i < result.entries.length; i++) { 
       var entry = result.entries[i]; 
       html += '<p><a href="' + entry.url + '">' + entry.title + '</a></p>'; 
       submenu[i] = entry.url; 
      } 
      content.innerHTML = html; 

      document.getElementById('<%= Hidden1.ClientID %>').value = submenu; 
     } 
    } 

    google.setOnLoadCallback(OnLoad); 
</script> 
<div id="content"></div> 

然後在後事件page_load的.aspx頁使用System.Net.WebClient類方法來請求feed.htm

TestFeed.aspx(它位於網絡的應用程序的根目錄)

標記:

<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Label ID="Label1" runat="server"></asp:Label> 
    </div> 
    </form> 
</body> 

代碼隱藏:

protected void Page_Load(object sender, EventArgs e) 
    { 
     WebClient client = new WebClient(); 
     string path = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/feed.htm"); 

     Stream stream = client.OpenRead(path); 
     StreamReader sr = new StreamReader(stream); 
     //To view the result 
     Label1.Text = sr.ReadToEnd(); 
    } 
+0

如何指定開放打開讀取URL爲本地機器 – Karthik

+0

它只是返回頁面的內容而不是從api獲取的feed值 – Karthik

+0

@karthi - 請參閱已編輯的帖子。 – adatapost

相關問題