2009-11-16 84 views
0

我对ASP.NET相当陌生。我想知道如何从网站获取xml(在这种情况下是Kuler的API),然后使用AJAX发布结果?使用ASP.NET从其他域获取XML

所以我想在这里,是能够做一个查询Kuler的API。该URL将是类似于"http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable
然后将生成的xml以某种方式发送回JS。

任何指针将不胜感激(:

回答

2

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

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

+0

'DownloadString'给了我一个字符串,这是一个很难解析的字符串。我只是在返回的XML中寻找一个标签。有什么建议? – peirix 2009-11-17 19:28:59

+0

嗯,我发现它实际上已经通过了XML,所以我可以简单地执行'data.getElementsByTagName()'并获取我想要的标签。超级简单!谢谢! – peirix 2009-11-17 20:09:27

0

我会做使用jQuery的Ajax库,如果可能的话在Javascript整个事情它使用起来非常简单,你不必担心从得到的XML。服务器到客户端的方式。

+0

但我不能做的JavaScript跨浏览器的请求。这就是为什么我需要做这个服务器端。 – peirix 2009-11-16 13:31:33

+0

我不确定跨浏览器请求是什么意思? – Jimmeh 2009-11-16 13:33:06

+0

由于安全问题,我无法从'www.mydomain.com'的'www.adobe.com'上访问JavaScript页面。 – peirix 2009-11-16 14:16:01

0

写.NET Web服务(的.asmx)封装了跨域调用,然后调用与AJAX该服务。

1

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

  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 
      }