代码之家  ›  专栏  ›  技术社区  ›  peirix

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

  •  0
  • peirix  · 技术社区  · 15 年前

    我对ASP.NET还比较陌生。我想知道如何从一个站点(本例中是Kuler的API)获取XML,然后使用Ajax发布结果?

    所以我想在这里,能够对Kuler的API进行查询。网址应该是 "http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable
    然后以某种方式将结果XML发送回JS。

    任何建议都会受到赞赏(:

    4 回复  |  直到 15 年前
        1
  •  2
  •   Timothy S. Van Haren Prashant    15 年前

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

    这就是我在一个网站上所做的。我有一个处理程序(我们称之为proxy.ashx),它是从jquery ajax请求调用的。ashx只对远程URL执行webclient.downloadstring操作,并将远程响应(XML)发送回客户端。

        2
  •  1
  •   Misha N.    15 年前

    我认为蒂姆说的够多了,但我想补充的是,您可以如何执行服务器端请求:

                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
                }
    
        3
  •  0
  •   Jimmeh    15 年前

    如果可能的话,我会使用jquery的Ajax库在JavaScript中完成整个工作。它的使用非常简单,您不必担心以这种方式将XML从服务器传输到客户机。

        4
  •  0
  •   Pharabus    15 年前

    编写一个.NET WebService(.asmx)来封装跨域调用,然后使用Ajax调用该服务。