使用ASP.NET从其他域获取XML
我对ASP.NET相当陌生。我想知道如何从站点获取xml(本例中是Kuler的API),然后使用AJAX发布结果 所以我想在这里,能够对Kuler的API进行查询。URL类似于使用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从服务器发送到客户
”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()
并获取我想要的标签。非常简单!谢谢!