Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Помогите! Серверный JS (https://javascript.ru/forum/server/3344-pomogite-servernyjj-js.html)

swa 10.04.2009 10:30

Помогите! Серверный JS
 
Пожалуйста, помогите с переадресацией запроса.
Есть клиентское приложение (MIDP), посылающее GET запросы на сервер, и получает оттуда ответ в XML.
Необходимо перенаправить запрос на внешний сервер и полученный от внешнего сервера XML (той же стурктуры) снова отдать запрашивающему приложению.

Вадим

P.S. Было предложен вот такой скрипт, который, к сожалению, не работает...

<script language="VBScript" runat=Server>
function getResults()
Dim xmlDOC
Dim bOK
Dim HTTP
Set HTTP = CreateObject("MSXML2.XMLHTTP")
Set xmlDOC =CreateObject("MSXML.DOMDocument")
xmlDOC.Async=False
HTTP.Open "GET","http://m.tele-club.ru/rasspisanie/modules/exp_xml.php?m=exp_xml&idu=91&idf=94&idg=66&d=2009-08-31", False
HTTP.Send()
bOK = xmlDOC.load(HTTP.responseXML)
response.write(bOK)
</script>

Kolyaj 10.04.2009 10:56

Цитата:

Сообщение от swa
language="VBScript"

Вы форумом не ошиблись?

swa 10.04.2009 11:07

простите! Конечно в скрипте ошибка - это не тот скрипт :(
Вот на JS:

<script language="javascript" runat="server">
var xmlhttp;

function loadXMLDoc(url) {
xmlhttp = null;
if (window.XMLHttpRequest) {// Для всех браузеров кроме ослов 5 и 6
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {// для IE5-6
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
if (xmlhttp != null) {
xmlhttp.onreadystatechange = state_Change;
xmlhttp.open("GET", url, true);
xmlhttp.send(null);
}
else {
alert("Your browser does not support XMLHTTP.");
}
};

loadXMLDoc("http://m.tele-club.ru/rasspisanie/modules/exp_xml.php?m=exp_xml&idu=91&idf=94&idg=66&d=2009-08-31");
Response.Write(xmlhttp.toString());
</script>

swa 10.04.2009 11:08

кстати, ни тот ни другой не работают :)

Riim 10.04.2009 11:25

а Response.Redirect не подходит почему?

swa 10.04.2009 11:33

Прямая переадресация запрещена MIDP. Ответ может быть получен только от сервера, к которому происходит запрос.

x-yuri 10.04.2009 11:55

ну так этот сценарий, как я себе представляю, на клиенте, а не на сервере выполняться должен. И соответственно на клиенте объекта Response нету. И результат запроса можно получить в функции state_Change, которая тоже должна быть клиентской
p.s. и переадресации никакой я тут не вижу. Вижу ajax-запрос. Да и не серверный js это, если я правильно понял

swa 10.04.2009 12:01

Нужен именно серверный вариант.
Показанный текст - это предложенный вариант. Он неправильный.
В серверном, как минимум, нет объектов window :)

swa 10.04.2009 12:06

Буду благодарен за работающий код на JS или VBS!

Можно для этой цели открыть проект на weblancer или в другом подходящем месте. Или просто сказать свой WM.

Riim 10.04.2009 12:26

Цитата:

Сообщение от swa
Ответ может быть получен только от сервера, к которому происходит запрос.

Может Server.Transfer() сгодится?

x-yuri 10.04.2009 12:28

swa, а с клиента ajax-запросы выполнять нельзя?

swa 10.04.2009 12:29

не знаю, что это такое...
может и сгодится ))

Riim 10.04.2009 12:32

Цитата:

Сообщение от swa
не знаю, что это такое...

про Server.Transfer

swa 10.04.2009 12:34

нет, с клиента никак нельзя.
Клиент общается только с "родным" сервером.
А там происходит определение необходимости переадресовки запроса на внешний сервер. И уже оттуда полученный ответ отдается.

x-yuri 10.04.2009 12:42

а где тут переадресация? Переадресация это когда клиент обращается, например, к своему серверу, а он говорит, не сходи на другой сервер, клиент идет на другой сервер и там уже получает нужную информацию
А у тебя клиент обращается к своему серверу, сервер сам получает информацию с другого сервера и отдает клиенту
server.transfer действует в пределах одного сервера, насколько я знаю
если с клиента нельзя отправлять запросы на внешние сервера, то тебе нужно на сервере найти какой-нибудь класс, который позволяет выполнять внешние запросы, т.е. типа http-клиент
p.s. в принципе xmlhttp можно использовать в синхронном режиме, так что может это он и есть. Но в твоем случае он написан для выполнения на клиенте и для работы в асинхронном режиме (а это в твоем случае не нужно)

swa 10.04.2009 13:32

согласен!
только мне нужно, то, что я говорю, пусть без перенаправления (фиг с ним), но с получением данных от внешнего сервера.
В JS я однако не силён, что в общем-то видно.
Но вот за совет, а лучше за пример скрипта такого рода буду признателен.

Riim 10.04.2009 13:39

Прикреплен: RssReader.zip
Я его не использовал, но судя по названию может вам пригодится.

x-yuri 10.04.2009 13:58

Riim, да, похоже оно:
Код:

XmlDocument doc = new XmlDocument();
doc.Load("http://server.com/default.aspx");

только это на C#

Riim 10.04.2009 14:01

Цитата:

Сообщение от x-yuri
XmlDocument doc = new XmlDocument();
doc.Load("http://server.com/default.aspx");

Блин, точно. А ведь знал я про это. Даже где то использовал. Давно мне уже с xml работать не приходилось. Простейшее забывается

Riim 10.04.2009 14:05

Цитата:

Сообщение от x-yuri
только это на C#

asp и asp.net отлично работают вместе. Я и у себя на компе так делал, и на 1gb.ru . Кажется только с Session и Aplication проблемы были.


swa,
Кстати Server.Transfer не подошел получается? Он вообще в asp есть? А то я с ним только в asp.net столкнулся, да и то 1 раз.

swa 10.04.2009 16:02

так это .Net...
на сервере нет .Net - только чистый ASP
Или JS.

Riim 10.04.2009 16:29

А, что мешает организовать Net ?

Цитата:

Сообщение от swa
только чистый ASP
Или JS.

Сказано так, как будто это два языка программирования. asp - это технология, а не ЯП. И в составе этой технологии есть реализации JScript и VBScript. И еще про реализацию perl-а что-то слышал.

http://ru.wikipedia.org/wiki/Active_Server_Pages

x-yuri 10.04.2009 16:34

я даже не знаю где на msdn про чистый asp :blink: хотя я, конечно, так много с asp (даже если .net сюда включить) работал... ;)

swa 10.04.2009 16:40

Судари, так почему бы не сделать на JS?
Ведь об этом речь с самого начала...
Кто просто может помочь с JS. В долгу не останусь.

x-yuri 10.04.2009 17:03

а js сам по себе что ли работает? Нет. Под управлением веб-сервера. Причем в составе asp в данном случае (а не asp.net), не сам же по себе. А с asp я не работал и не знаю где по нему документация (не нашел на сайте ms), только по asp.net. Хотя может через COM XmlDocument можно создать
p.s. какой iis, кстати? Я так понял, что asp.net появилась с iis 6.0

Riim 10.04.2009 17:50

Цитата:

Сообщение от swa
Судари, так почему бы не сделать на JS?
Ведь об этом речь с самого начала...

А ты сам что ни будь сделал? Я спрашивал, работает ли Server.Transfer . Ответа не услышал. Ты его хотя бы попробовал. Если ты сам ничего не делаешь, то с чего у меня должно быть желание вспоминать то, что я забыл 5 лет назад.

x-yuri тебе даже нужные строки нашел.
Цитата:

XmlDocument doc = new XmlDocument();
doc.Load("http://server.com/default.aspx");
По-моему очевидно как обозвать то, что в них происходит, и с чем идти к яндексу.

http://yandex.ru/yandsearch?text=asp+загрузка+xml

На второй позиции:
http://xmlhack.ru/forum/xml/topic905.html

swa 13.04.2009 13:23

Спасибо!
Сделано.


Часовой пояс GMT +3, время: 18:44.