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

使用ASP.NET从其他域获取XML,asp.net,xml,api,Asp.net,Xml,Api,我对ASP.NET相当陌生。我想知道如何从站点获取xml(本例中是Kuler的API),然后使用AJAX发布结果 所以我想在这里,能够对Kuler的API进行查询。URL类似于”http://kuler-api.adobe.com/rss/search.cfm?query=“+查询变量 然后以某种方式将生成的xml发送回JS 任何指点都将不胜感激(:如果可能的话,我会使用Jquery的ajax库在Javascript中完成全部工作。它使用非常简单,您不必担心通过这种方式将XML从服务器发送到客户

我对ASP.NET相当陌生。我想知道如何从站点获取xml(本例中是Kuler的API),然后使用AJAX发布结果

所以我想在这里,能够对Kuler的API进行查询。URL类似于
”http://kuler-api.adobe.com/rss/search.cfm?query=“+查询变量

然后以某种方式将生成的xml发送回JS


任何指点都将不胜感激(:

如果可能的话,我会使用Jquery的ajax库在Javascript中完成全部工作。它使用非常简单,您不必担心通过这种方式将XML从服务器发送到客户端。

如果可能的话,我会使用Jquery的ajax库在Javascript中完成全部工作。它使用非常简单,您不必担心获取以这种方式将XML从服务器发送到客户端。

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

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

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


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

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


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

我想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
            }

我认为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
            }

但是我不能用javascript进行跨浏览器请求。这就是为什么我需要在服务器端进行此操作。我不确定你所说的跨浏览器请求是什么意思?因为安全问题,我不能让javascript从
www.mydomain.com
访问
www.adobe.com
上的页面。但我不能用javascript进行跨浏览器请求。这就是为什么我不能我不知道你说的跨浏览器请求是什么意思?由于安全问题,我无法让javascript从
www.mydomain.com
访问
www.adobe.com
上的页面。
DownloadString
给了我一个字符串,这有点难解析。我只是在返回的xml中查找一个标记。有什么建议吗?啊,我发现它实际上是以XML的形式通过的,所以我可以简单地执行
data.getElementsByTagName()
并获取我想要的标记。非常简单!谢谢!
DownloadString
给了我一个字符串,这有点难解析。我只在返回的xml中查找一个标记。有什么建议吗?啊,我发现它实际上是作为xml传递的,所以我可以简单地执行
数据。getElementsByTagName()
并获取我想要的标签。非常简单!谢谢!