powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как лучше возвратить результат HTML (GET) запроса
12 сообщений из 12, страница 1 из 1
Как лучше возвратить результат HTML (GET) запроса
    #35973389
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача внедрить в программу задолженность за услуги связи с внешнего сервера. На HTML запрос система возвращает xml - который я потом разбираю.
Проблема в том что буду присать внешнюю DLL или EXE для взаимодействия с сервером и использовать ее и основной программы. Как будет правильней возвращать из DLL или EXE полученные данные?
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #35973399
ПД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Внедрить этот функционал в саму программу. :-)
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #35973417
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том то и дело что в программе будет только вызов внешней процедуры и получение ответа. Потому что программа стоит в разных местах - и не везде это надо.
Я прошлый раз делал - вызывал внешнюю FXP с параматрами и возвращал массив. Почему FXP а не EXE - потому что FXP в текущем сеансе запускается а EXE создает новый сеанс и массив не возвращает. Но т.к. это не очень красиво, хочется по уму сделать. С DLL пока не работал, поэтому совет спрашиваю. Тем более что у нас несколько программ и эту функцию надо внедрить во все. Поэтому только внешний модуль нужен, унифицированный для всех.
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #35973456
VictorSK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используте DLL и запускайте его как COM+. На эту тему поищите на www.foxclub.ru
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #35974100
fox_vik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А. С.В том то и дело что в программе будет только вызов внешней процедуры и получение ответа. Потому что программа стоит в разных местах - и не везде это надо.
Я прошлый раз делал - вызывал внешнюю FXP с параматрами и возвращал массив. Почему FXP а не EXE - потому что FXP в текущем сеансе запускается а EXE создает новый сеанс и массив не возвращает. Но т.к. это не очень красиво, хочется по уму сделать. С DLL пока не работал, поэтому совет спрашиваю. Тем более что у нас несколько программ и эту функцию надо внедрить во все. Поэтому только внешний модуль нужен, унифицированный для всех.
Если ЕХЕ создан в фоксе и запускается из фокса не командой RUN, то новый сеанс не создается. Все функции, вызываемые в ЕХЕ работают в одном адресном пространстве с вызывающей программой. Они также как и FXP могут принимать и возвращать массивы в качестве параметров.
Например, если в ВВВ.ЕХЕ есть функция FuncA, то ее можно вызвать как Do FuncA in BBB.EXE with ParamC
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как лучше возвратить результат HTML (GET) запроса
    #36624500
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снова возвращаюсь к старому вопросу. Ткните носом пожалуйста, второй день маюсь.
Есть сервер, при помощи get-запроса я должен получить с него данные в xml формате.
Пытаюсь сделать так
o=CreateObject("InternetExplorer.Application")
cmd="https://proba.ru?act=makeDoc&user=user&pass=password"
o.Navigate(cmd)
при этом объект создается, o.Document.ReadyState отвечает что все удачно, но не знаю как вытащить данные. В IE и в Опере данные в окне браузера отображаются.
Есть и другие способы, кроме CreateObject("InternetExplorer.Application"), но что-то не получается тоже.
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #36624520
lo-pata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну так если данные в окне браузера получили, в чем дальше проблема?

Код: plaintext
1.
2.
3.
4.
oIE=CREATEOBJECT("InternetExplorer.Application")
oIE.visible = .t. && хотя видимым окно браузера делать не обязательно
oDoc = oIE.Document
loContent=oDoc.documentElement
lcString=loContent.outerHTML

А дальше разбирать содержимое - эту самую lcString и вытаскивать оттуда нужные данные :)
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #36624949
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я просто с oIE.Document не знал и не смог найти нигде.

Код: plaintext
1.
2.
3.
4.
5.
oIE=CREATEOBJECT("InternetExplorer.Application")
cmd="https://proba.ru?act=makeDoc&user=user&pass=password"
o.Navigate(cmd)
oDoc = oIE.Document
loContent=oDoc.documentElement
lcString=loContent.outerHTML

Но проблема следующая, нужные мне данные окне браузера отображаются так:
Код: plaintext
1.
2.
3.
4.
5.
 <?xml version="1.0" encoding="Windows-1251" ?> 
- <pay_response>
  <status_code>- 3 </status_code> 
  <fio /> 
  <time_stamp> 13 . 05 . 2010   10 : 18 : 52 </time_stamp> 
  </pay_response>

и мне хотелось бы в таком виде иметь данные, потому что в переменную lcString при этом я получаю весь код html страницы, где нужные мне данные находятся в таком виде:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
<HTML><HEAD>
<STYLE>BODY{font:x-small 'Verdana';margin-right: 1 .5em}
.c{cursor:hand}
.b{color:red;font-family:'Courier New';font-weight:bold;text-decoration:none}
.e{margin-left:1em;text-indent:-1em;margin-right:1em}
.k{margin-left:1em;text-indent:-1em;margin-right:1em}
.t{color:# 990000 }
.xt{color:# 990099 }
.ns{color:red}
.dt{color:green}
.m{color:blue}
.tx{font-weight:bold}
.db{text-indent:0px;margin-left:1em;margin-top:0px;margin-bottom:0px;padding-left:.3em;border-left:1px solid #CCCCCC;font:small Courier}
.di{font:small Courier}
.d{color:blue}
.pi{color:blue}
.cb{text-indent:0px;margin-left:1em;margin-top:0px;margin-bottom:0px;padding-left:.3em;font:small Courier;color:# 888888 }
.ci{font:small Courier;color:# 888888 }
PRE{margin:0px;display:inline}</STYLE>

<SCRIPT><!--
function f(e){
if (e.className=="ci"){if (e.children( 0 ).innerText.indexOf("\n")> 0 ) fix(e,"cb");}
if (e.className=="di"){if (e.children( 0 ).innerText.indexOf("\n")> 0 ) fix(e,"db");}
e.id="";
}
function fix(e,cl){
e.className=cl;
e.style.display="block";
j=e.parentElement.children( 0 );
j.className="c";
k=j.children( 0 );
k.style.visibility="visible";
k.href="#";
}
function ch(e){
mark=e.children( 0 ).children( 0 );
if (mark.innerText=="+"){
mark.innerText="-";
for (var i= 1 ;i<e.children.length;i++)
e.children(i).style.display="block";
}
else if (mark.innerText=="-"){
mark.innerText="+";
for (var i= 1 ;i<e.children.length;i++)
e.children(i).style.display="none";
}}
function ch2(e){
mark=e.children( 0 ).children( 0 );
contents=e.children( 1 );
if (mark.innerText=="+"){
mark.innerText="-";
if (contents.className=="db"||contents.className=="cb")
contents.style.display="block";
else contents.style.display="inline";
}
else if (mark.innerText=="-"){
mark.innerText="+";
contents.style.display="none";
}}
function cl(){
e=window.event.srcElement;
if (e.className!="c"){e=e.parentElement;if (e.className!="c"){return;}}
e=e.parentElement;
if (e.className=="e") ch(e);
if (e.className=="k") ch2(e);
}
function ex(){}
function h(){window.status=" ";}
document.onclick=cl;
--></SCRIPT>
</HEAD>
<BODY class=st>
<DIV class=e><SPAN class=b> </SPAN> <SPAN class=m><?</SPAN><SPAN class=pi>xml version="1.0" encoding="Windows-1251" </SPAN><SPAN class=m>?></SPAN> </DIV>
<DIV class=e>
<DIV class=c style="MARGIN-LEFT: 1em; TEXT-INDENT: -2em"><A class=b onfocus=h() onclick="return false" href="#">-</A> <SPAN class=m><</SPAN><SPAN class=t>pay_response</SPAN><SPAN class=m>></SPAN></DIV>
<DIV>
<DIV class=e>
<DIV style="MARGIN-LEFT: 1em; TEXT-INDENT: -2em"><SPAN class=b> </SPAN> <SPAN class=m><</SPAN><SPAN class=t>status_code</SPAN><SPAN class=m>></SPAN><SPAN class=tx>- 3 </SPAN><SPAN class=m></</SPAN><SPAN class=t>status_code</SPAN><SPAN class=m>></SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="MARGIN-LEFT: 1em; TEXT-INDENT: -2em"><SPAN class=b> </SPAN> <SPAN class=m><</SPAN><SPAN class=t>fio</SPAN> <SPAN class=m>/></SPAN> </DIV></DIV>
<DIV class=e>
<DIV style="MARGIN-LEFT: 1em; TEXT-INDENT: -2em"><SPAN class=b> </SPAN> <SPAN class=m><</SPAN><SPAN class=t>time_stamp</SPAN><SPAN class=m>></SPAN><SPAN class=tx> 13 . 05 . 2010   10 : 01 : 42 </SPAN><SPAN class=m></</SPAN><SPAN class=t>time_stamp</SPAN><SPAN class=m>></SPAN> </DIV></DIV>
<DIV><SPAN class=b> </SPAN> <SPAN class=m></</SPAN><SPAN class=t>pay_response</SPAN><SPAN class=m>></SPAN></DIV></DIV></DIV></BODY></HTML>
можно ли получить только xml? А то как-то много разбирать придется.
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #36625084
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: А. С.
> Но проблема следующая, нужные мне данные окне браузера отображаются так:
....
> и мне хотелось бы в таком виде иметь данные, потому что в переменную lcString при этом я получаю весь код html
> страницы, где нужные мне данные находятся в таком виде:

Тебе придется вытаскивать нужные данные самостоятельно, потому что сервер возвращает не XML, а HTML имитирующий
XML.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #36625127
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось!!!

Код: plaintext
1.
2.
3.
4.
5.
oIE=CREATEOBJECT("InternetExplorer.Application")
cmd="https://proba.ru?act=makeDoc&user=user&pass=password"
oIE.Navigate(cmd)
oDoc = oIE.Document
loContent=oDoc.documentElement
lcString=loContent.InnerText
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как лучше возвратить результат HTML (GET) запроса
    #37558976
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, вопрос снова поднимаю.
Теперь есть задача переделать данную конструкцию без поднятия "InternetExplorer.Application".
Как вариант попробовать wininet.dll, но не пойму как это сделать. Нужно принять xml без сохранения на диск, то есть GetUrlToFile не подходит.
Может непонятно написал, поправьте.
...
Рейтинг: 0 / 0
Как лучше возвратить результат HTML (GET) запроса
    #37559076
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ошибка в сообщении выше, URLDownloadToFile не хочется использовать, т.к. в файл надо сохранять уже результат распарсивания XML
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как лучше возвратить результат HTML (GET) запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]