Любая модель(ActiveRecord) в Rails умеет сохраняться в виде xml. Это позволяет без проблем в зависимости от запроса выдавать результат в html или xml виде. А это значит, что появляется возможность прикрутить клиент отличный от браузера.
Сделать это можно следующим образом.
class TestController < ApplicationController
def get_data
res = FooObject.find(params[:id])
respond_to do |format|
format.html
format.xml { render :xml => @res}
end
end
end
По запросу http://localhost:3000/test/1 будет получена html-страница, созданная в по соответствующему шаблону, а вот по запросу http://localhost:3000/test/1.xml получится xml-представление объекта FooObject. Что именно окажется в xml-файле опредляется строчкой
format.xml { render :xml => @res}
Без проблем сериализуются как отдельные объекты, так их объекты, находящиеся в контейнере.
Программу для запроса xml-файла я написал на C#.
//создаём запрос
WebRequest request = WebRequest.Create(queryUrl);
request.ContentType = "text/xml";
WebResponse myWebResponse = request.GetResponse();
long len = myWebResponse.ContentLength;
byte[] buff = new byte[len];
//считываем результат в буффер
myWebResponse.GetResponseStream().Read(buff, 0, (int)len);
string responseXml =
new String(System.Text.Encoding.ASCII.GetString(buff).ToCharArray());
Таким образом в responseXml окажется интересующий нас xml-файл, с которым можно делать всё, что душе угодно.
Комментариев нет:
Отправить комментарий