использование веб-сайтов для передачи xml

Как мне настроить сценарий, в котором один веб-сайт, размещенный в X, публикует URL-адрес, который при переходе возвращает чистый XML.

Веб-страница в другом месте попадет по этому URL-адресу, загрузит XML в объекты.

Итак, мне нужен URL-адрес, например http://www.xml.com/document.aspx?id =1

Другой сайт будет использовать объекты веб-ответа и веб-запроса, чтобы получить ответ с указанной выше страницы. Я хочу, чтобы ответ был хорошим XML, поэтому я могу просто использовать XML для заполнения объектов.

У меня действительно что-то работало, но ответ содержал весь HTML, необходимый для отображения страницы, и я на самом деле просто хочу, чтобы XML был ответом.


person Robert Hancliff    schedule 23.10.2012    source источник
comment
Возможный дубликат: stackoverflow.com/questions/2295892/   -  person RemarkLima    schedule 23.10.2012


Ответы (1)


Вероятно, лучший способ сделать это с помощью файла HttpHandler/ASHX, но если вы хотите сделать это со страницей, это вполне возможно. Два ключевых момента:

  1. Используйте пустую страницу. Все, что вам нужно в разметке для вашего ASPX, это директива ‹% Page ... %>.
  2. Установите ContentType потока ответа на XML — Response.ContentType = "text/xml"

Как вы генерируете сам XML, зависит от вас, но если XML представляет граф объектов, вы можете использовать XmlSerializer (из пространства имен System.Xml.Serialization) для записи XML непосредственно в поток ответа для вас, например.

using System.Xml.Serialization;

// New up a serialiser, passing in the System.Type we want to serialize
XmlSerializer serializer = new XmlSerializer(typeof(MyObject));

// Set the ContentType
Response.ContentType = "text/xml";

// Serialise the object to XML and pass it to the Response stream 
// to be returned to the client
serialzer.Serialize(Response.Output, MyObject);

Если у вас уже есть XML, то после того, как вы установили ContentType, вам просто нужно записать его в поток ответов, а затем завершить и очистить поток.

// Set the ContentType
Response.ContentType = "text/xml";

Response.Write(myXmlString);

Response.Flush();
Response.End();
person PhilPursglove    schedule 23.10.2012
comment
Ну, у меня уже есть XML, я просто хочу получить его в виде строки на другом конце, без изысков, просто отправьте строку через Интернет, и это будет xml. ваше здоровье - person Robert Hancliff; 23.10.2012
comment
я боюсь, я не вижу, как я использую это, чтобы отправить строку - person Robert Hancliff; 23.10.2012
comment
@RobertHancliff Обновлено информацией о выводе простой строки XML. - person PhilPursglove; 23.10.2012
comment
Не беспокойтесь, я думаю, что с вашей идеей мне удалось написать что-то очень подходящее. Теперь, чтобы потреблять его. Пошел с идеей HTTPHandler, спасибо - person Robert Hancliff; 23.10.2012