我對ASP.NET相當陌生。我想知道如何從網站獲取xml(在這種情況下是Kuler的API),然後使用AJAX發佈結果?使用ASP.NET從其他域獲取XML
所以我想在這裏,是能夠做一個查詢Kuler的API。該URL將是類似於"http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable
然後將生成的xml以某種方式發送回JS。
任何指針將不勝感激(:
我對ASP.NET相當陌生。我想知道如何從網站獲取xml(在這種情況下是Kuler的API),然後使用AJAX發佈結果?使用ASP.NET從其他域獲取XML
所以我想在這裏,是能夠做一個查詢Kuler的API。該URL將是類似於"http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable
然後將生成的xml以某種方式發送回JS。
任何指針將不勝感激(:
你需要做的是有一個處理程序,將執行XML的請求並使用AJAX將其發送回瀏覽器,它將充當服務器和客戶端之間的中介,不必擔心跨域策略。
這是我在我的一個網站上做的。我有一個從jQuery AJAX請求調用的處理程序(我們稱之爲proxy.ashx)。 proxy.ashx只需對遠程URL執行WebClient.DownloadString操作,並將遠程響應(XML)發送回客戶端。
寫.NET Web服務(的.asmx)封裝了跨域調用,然後調用與AJAX該服務。
我認爲蒂姆說夠了,但我想補充的是你如何可以做服務器端請求:
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
}
'DownloadString'給了我一個字符串,這是一個很難解析的字符串。我只是在返回的XML中尋找一個標籤。有什麼建議? – peirix 2009-11-17 19:28:59
嗯,我發現它實際上已經通過了XML,所以我可以簡單地執行'data.getElementsByTagName()'並獲取我想要的標籤。超級簡單!謝謝! – peirix 2009-11-17 20:09:27