получение XML из другого домена с использованием ASP.NET - PullRequest
0 голосов
/ 16 ноября 2009

Я довольно новичок в ASP.NET. И мне было интересно, как я могу получить XML с сайта (в данном случае API Кулера), а затем опубликовать результат с помощью AJAX?

Так что я хочу здесь, чтобы иметь возможность делать запрос к API Кулера. URL будет что-то вроде "http://kuler-api.adobe.com/rss/search.cfm?query="+queryVariable
Затем отправьте полученный XML-файл обратно в JS каким-либо образом.

Любые указатели приветствуются (:

Ответы [ 4 ]

2 голосов
/ 16 ноября 2009

Что вам нужно сделать, так это иметь обработчик, который выполнит запрос на XML и отправит его обратно в браузер с помощью AJAX. Он будет выступать в качестве посредника между сервером и клиентом, и вам не придется беспокоиться о междоменных политиках.

Это то, что я делаю на одном из моих сайтов. У меня есть обработчик (назовем его proxy.ashx), который я вызываю из запроса JQuery AJAX. Proxy.ashx просто выполняет действие WebClient.DownloadString для удаленного URL-адреса и отправляет удаленный ответ (XML) обратно на клиентскую сторону.

1 голос
/ 16 ноября 2009

Я думаю, что Тим сказал достаточно, но я хотел бы добавить, как вы можете выполнить запрос на стороне сервера:

            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
            }
0 голосов
/ 16 ноября 2009

Напишите веб-службу .net (.asmx), которая инкапсулирует междоменный вызов, а затем вызовите эту службу с помощью AJAX.

0 голосов
/ 16 ноября 2009

Я бы сделал все это в Javascript, используя библиотеку ajax Jquery, если это возможно. Его очень просто использовать, и вам не нужно беспокоиться о том, чтобы таким образом передавать XML с сервера на клиент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...