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