![]() |
Rss с на Asp
Rss с на asp
Решил на своем итранет сервере сделать RSS Написал скрипт сохранил его в паке IIS c разрешенным исполнением сценариев. Скипт имеет название news.xml. настроил IIS так чтоб он обрабатывал написанный мной скрипт. С помощью "Opera"ы зашел на url [неurl]http://localhost/asp/news.xml[/неurl] выдает страницу но браузер не распознает в нем rss. Скопировал исходный xml текст, выданный браузером и сохранил его в корне IIS, под именем new.xml. Даю браузеру команду [неurl]http://localhost/new.xml[/неurl] и браузер сразу начинает просится добавит rss канал. не понимаю почему даже если IIS ВЫДАЕТ XML ПОЧЕМУ БРАУЗЕР НЕ СЧИТАЕТ ЕГО RSSом Исходный текст скрипта http://localhost/asp/news.xml -------------------------------------------------------------------------------------- [неurl]http://localhost/asp/news.xml[/неurl] -------------------------------------------------------------------------------------- <?xml version="1.0" encoding="windows-1251"?> <rss version="2.0"> <channel> <title>Ipak yulim</title> <link>http://10.14.144.95/</link> <description>Ipak yul i</description> <image> <url>http://10.14.144.95/images/Ipak.gif</url><link>http://10.14.144.95</link><title>10.14.144.95 Новости</title> </image> <%@ Language=VBScript %> <% 'Создание объекта подключения. Response.Write "<lastBuildDate>" & Date() & " " & Time() & "</lastBuildDate> " & chr(13) Set cnn = Server.CreateObject("ADODB.Connection") Set rstCustomers = Server.CreateObject("ADODB.Recordset") 'Открытие подключения с помощью строки подключения OLE DB. cnn.Open "Provider=ibole.Provider.v4;Persist Security Info=True;Data Source=localhost:C:\Inetpub\webbase\WBASE.FDB;Mode=Read;%LOGIN-INFO%" strSQL = "select FIRST 10 * from news order by time_stamp desc;" rstCustomers.Open strSQL, cnn Set objTITLE = rstCustomers("TITLE") Set objTIME_STAMP = rstCustomers("TIME_STAMP") Set objTEXT = rstCustomers("TEXT") Set objID = rstCustomers("ID") Do Until rstCustomers.EOF Response.Write " <item>" & chr(13) & "<title>" & objTITLE & "</title>" & chr(13) Response.Write "<link>http://10.14.144.95/asp/podrobno.asp?id=" & objID & "</link> " & chr(13) Response.Write " <description>" & objTEXT &"</description> " & chr(13) Response.Write " <pubDate>" & date() & " " & time() & "</pubDate> "& chr(13) Response.Write " <guid>http://10.14.144.95/asp/podrobno.asp?id=" & objID & "</guid>" & chr(13) & "</item> " rstCustomers.MoveNext Loop %> </channel> </rss> полученный браузером текст xml ------ ---------------------------------------------------------------------------------- [неurl]http://localhost/new.xml[/неurl] ---------------------------------------------------------------------------------- <?xml version="1.0" encoding="windows-1251"?> <rss version="2.0"> <channel> <title>Ipak yulim</title> <link>http://10.14.144.95/</link> <description>Ipak yul i</description> <image> <url>http://10.14.144.95/images/Ipak.gif</url><link>http://10.14.144.95</link><title>10.14.144.95 Новости</title> </image> <lastBuildDate>24.07.2008 19:48:42</lastBuildDate> <item> <title>НУ И ЕШЕ GNU Library General Public License, Versi</title> <link>http://10.14.144.95/asp/podrobno.asp?id=3</link> <description>GNU Library General Public License, Version 2</description> <pubDate>24.07.2008 19:48:42</pubDate> <guid>http://10.14.144.95/asp/podrobno.asp?id=3</guid> </item> <item> <title>ТЕМА</title> <link>http://10.14.144.95/asp/podrobno.asp?id=1</link> <description>И ТЕКСТ К ПРИМЕРУ</description> <pubDate>24.07.2008 19:48:42</pubDate> <guid>http://10.14.144.95/asp/podrobno.asp?id=1</guid> </item> </channel> </rss> |
IIS не тот хедер шлет, какой нужен. Попробуй до вывода (в самом начале) вставить
Код:
<% Response.ContentType = "text/xml" %> Цитата:
|
Цитата:
<%@ Language=VBScript %> <% Response.ContentType = "text/xml" %> <% Response.Write "<?xml version=" & chr(34) & "1.0" & chr(34) & " encoding=" & chr(34) & "windows-1251" & chr(34) & "?>" & chr(13) Response.Write "<rss version=" & chr(34) & "2.0" & chr(34) & ">" & chr(13) Response.Write "<channel>" & chr(13) & chr(13) Response.Write "<title>Ipak yulim</title>" & chr(13) Response.Write "<link>http://10.14.144.95/</link>" & chr(13) Response.Write "<description>Ipak yul i</description>" & chr(13) Response.Write "<image>" & chr(13) Response.Write "<url>http://10.14.144.95/images/Ipak.gif</url><link>http://10.14.144.95</link><title>10.14.144.95 Новости</title>"& chr(13) Response.Write "</image>" & chr(13) %> <% 'Создание объекта подключения. Response.Write "<lastBuildDate>" & Date() & " " & Time() & "</lastBuildDate> " & chr(13) Set cnn = Server.CreateObject("ADODB.Connection") Set rstCustomers = Server.CreateObject("ADODB.Recordset") 'Открытие подключения с помощью строки подключения OLE DB. cnn.Open "Provider=ibole.Provider.v4;Persist Security Info=True;Data Source=localhost:C:\Inetpub\webbase\WBASE.FDB;Mode=Read;%LOGIN-INFO%" strSQL = "select FIRST 10 * from news order by time_stamp desc;" rstCustomers.Open strSQL, cnn Set objTITLE = rstCustomers("TITLE") Set objTIME_STAMP = rstCustomers("TIME_STAMP") Set objTEXT = rstCustomers("TEXT") Set objID = rstCustomers("ID") Do Until rstCustomers.EOF Response.Write " <item>" & chr(13) & "<title>" & objTITLE & "</title>" & chr(13) Response.Write "<link>http://10.14.144.95/asp/podrobno.asp?id=" & objID & "</link> " & chr(13) Response.Write " <description>" & objTEXT &"</description> " & chr(13) Response.Write " <pubDate>" & date() & " " & time() & "</pubDate> "& chr(13) Response.Write " <guid>http://10.14.144.95/asp/podrobno.asp?id=" & objID & "</guid>" & chr(13) & "</item> " rstCustomers.MoveNext Loop %> </channel> </rss> |
вроде как де-факто принято указывать application/rss+xml
|
Цитата:
|
Sham, пример довольно экзотический
|
+ старые браузеры могут не отрабатывать такие заголовки и предлагать файл на закачку (и не у всех есть rss-клиент)...
вообще обычно на прямой вывод шлется "text/xml", а только на подписку "application/rss+xml": HTML код:
<link rel="alternate" type="application/rss+xml" title="Компьютерный форум OSzone.net" href="external.php?type=RSS1" /> |
Время: 18:44. |
Время: 18:44.
© OSzone.net 2001-