2009-11-16 45 views
0

我對ASP.NET相當陌生。我想知道如何從網站獲取xml(在這種情況下是Kuler的API),然後使用AJAX發佈結果?使用ASP.NET從其他域獲取XML

所以我想在這裏,是能夠做一個查詢Kuler的API。該URL將是類似於"http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable
然後將生成的xml以某種方式發送回JS。

任何指針將不勝感激(:

回答

2

你需要做的是有一個處理程序,將執行XML的請求並使用AJAX將其發送回瀏覽器,它將充當服務器和客戶端之間的中介,不必擔心跨域策略。

這是我在我的一個網站上做的。我有一個從jQuery AJAX請求調用的處理程序(我們稱之爲proxy.ashx)。 proxy.ashx只需對遠程URL執行WebClient.DownloadString操作,並將遠程響應(XML)發送回客戶端。

+0

'DownloadString'給了我一個字符串,這是一個很難解析的字符串。我只是在返回的XML中尋找一個標籤。有什麼建議? – peirix 2009-11-17 19:28:59

+0

嗯,我發現它實際上已經通過了XML,所以我可以簡單地執行'data.getElementsByTagName()'並獲取我想要的標籤。超級簡單!謝謝! – peirix 2009-11-17 20:09:27

0

我會做使用jQuery的Ajax庫,如果可能的話在Javascript整個事情它使用起來非常簡單,你不必擔心從得到的XML。服務器到客戶端的方式。

+0

但我不能做的JavaScript跨瀏覽器的請求。這就是爲什麼我需要做這個服務器端。 – peirix 2009-11-16 13:31:33

+0

我不確定跨瀏覽器請求是什麼意思? – Jimmeh 2009-11-16 13:33:06

+0

由於安全問題,我無法從'www.mydomain.com'的'www.adobe.com'上訪問JavaScript頁面。 – peirix 2009-11-16 14:16:01

0

寫.NET Web服務(的.asmx)封裝了跨域調用,然後調用與AJAX該服務。

1

我認爲蒂姆說夠了,但我想補充的是你如何可以做服務器端請求:

  XmlDocument doc = new XmlDocument(); 
      HttpWebRequest r = (HttpWebRequest)HttpWebRequest.Create("http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable); 
      r.Method = "POST"; 


      using (Stream writeStream = r.GetRequestStream()) 
      { 
       UTF8Encoding encoding = new UTF8Encoding(); 
       byte[] bytes = encoding.GetBytes(bodyRequest); 
       writeStream.Write(bytes, 0, bytes.Length); 
      } 
      try 
      { 
       using (HttpWebResponse response = (HttpWebResponse)r.GetResponse()) 
       { 

        using (Stream responseStream = response.GetResponseStream()) 
        { 
         using (StreamReader readStream = new StreamReader(responseStream, Encoding.UTF8)) 
         { 
          doc.Load(readStream); 
         } 
        } 

       } 
      } 
      catch (WebException ex) 
      { 
       //Handle exception 
      }