使用ASP.NET从其他域获取XML

时间:2009-11-16 13:27:26

标签: asp.net xml api

我是ASP.NET的新手。我想知道如何从网站获取xml(在这种情况下是Kuler的API),然后使用AJAX发布结果?

所以我想要的是能够对Kuler的API进行查询。该网址类似"http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable 然后以某种方式将生成的xml发送回JS。

任何指针都会受到赞赏(:

4 个答案:

答案 0 :(得分:2)

您需要做的是拥有一个处理程序,它将执行XML请求并使用AJAX将其发送回浏览器。它将充当服务器和客户端之间的中介,您不必担心跨域策略。

这就是我在其中一个网站上所做的事情。我有一个处理程序(让我们称之为proxy.ashx),我从jQuery AJAX请求调用。 proxy.ashx只是对远程URL执行WebClient.DownloadString操作,并将远程响应(XML)发送回客户端。

答案 1 :(得分:1)

我认为Tim说得够多,但我想补充的是你如何做服务器端请求:

            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
            }

答案 2 :(得分:0)

如果可能的话,我会使用Jquery的ajax库在Javascript中完成所有工作。它使用起来非常简单,您不必担心从服务器到客户端的XML。

答案 3 :(得分:0)

编写一个封装跨域调用的.net webservice(.asmx),然后使用AJAX调用该服务。