2011-11-25 3 views
0

현재 Google 피드 API를 사용하여 동적으로 피드 링크를 얻고 있습니다. 내 웹 사이트에 대한 rss 피드를 만드는 API에서 반환 된 결과를 사용하려고합니다. 이제 문제는 페이지로드 후 API 함수 호출은 페이지로드 후에 만 ​​발생하므로 페이지로드 함수에서 API에 의해 반환 된 URL 값에 액세스 할 수 없습니다.페이지로드시 Google 피드 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> 

pageload 이벤트 :

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

<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> 

는 그런 후에서 .aspx 페이지를 사용 System.Net.WebClient 클래스 메소드의 page_load 이벤트에 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

방법 로컬 오픈 OpenRead URL을 지정하는 machine – Karthik

+0

그 페이지의 내용을 반환하지 않습니다. api에서 얻은 피드 값이 아닙니다 – Karthik

+0

@karthi - 편집 된 게시물보기. – adatapost