On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
администратор




Пост N: 5990
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.09.16 15:36. Заголовок: Подключение по HTTP


Что за либа мне нужна ? Ни когда ранее с этим не работал.
Из доки по API приложения.
 
Пример для GET запроса:
http://api.xxxxx.ua/WebSky/service.php/ConnectToServer?login=test&pass=test&tz=-180
В случае правильного логина и пароля и успешного подключения также возвращается
HTTP cookie с параметрами сессии, для использования при отсылке следующих запросов.

При успешном коннекте должен быть получен ответ
«ок» - подключение прошло успешно.

Собственно как слать такие запросы и как ловить ответы ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 33 , стр: 1 2 All [только новые]


постоянный участник


Пост N: 1276
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 02.09.16 17:33. Заголовок: Dima пишет: Что за..


Dima пишет:

 цитата:
Что за либа мне нужна ? Ни когда ранее с этим не работал.


hbtip - CLASS TIPClientHTTP FROM TIPClient, примеры в contrib есть
hbcurl, curl - Using cURL to automate HTTP jobs


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5991
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.09.16 17:46. Заголовок: Петр Понял , спасиб..


Петр
Понял , спасибо , буду смотреть.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6127
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.11.16 18:37. Заголовок: Что то лыжи не едут ..


Что то лыжи не едут совсем с HbTip...
Вот что пробовал сделать.
В инструкции пишут что запросы должны быть или GET или POST.
С GET вообще не срослось.


 
Proc Main()

LOCAL oUrl, oClient
local HQuery:={=>}

HQuery["Curl"]:= "http://api.skyriver.ua/WebSky/service.php/"
HQuery["LoginPass"]:= "ConnectToServer?login=Dima&pass=Dima&tz=-180"
HQuery["GetAllTradePoints"]:="GetAllTradePoints?a=a"
HQuery["Disconnect"]:= "Disconnect?a=1"


REQUEST HB_CODEPAGE_UTF8
hb_cdpSelect( "UTF8" )


oUrl := TUrl():New( HQuery["Curl"] )
//oUrl:buildQuery()

oClient := TIPClientHTTP():new( oUrl)
oClient:nConnTimeout := 20000

IF oClient:Open()
IF Empty( oClient:cReply )


// Следующие 2 строки с авторизацией сработают , oClient:post вернет .T.
// Другая строка вернет XML строку
// <?xml version="1.0" encoding="utf-8"?><string xmlns="http://gisserver.org/">ok</string>
// Если это проделать руками через браузер то получу такую же строку

? oClient:post(" ",HQuery["Curl"]+HQuery["LoginPass"] )
? oClient:ReadAll()

// Следующие 2 строки с запросом неких данных , сопротивляются.
// oClient:post вернет .F. а oClient:ReadAll вернет NIL
// Если руками это сделать в браузере то получу в ответ строку XML, вида
// <?xml version="1.0" encoding="utf-8"?><ArrayOfObjTree xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"></ArrayOfObjTree>


? oClient:post(" ",HQuery["Curl"]+HQuery["GetAllTradePoints"])
? oClient:ReadAll()


oClient:Get(HQuery["Disconnect"])


oClient:Close()

ENDIF


Endif

return


Пробовал либу Socket из поставки Minigui , картина примерно та же.
Первый Get работает , остальные нет.
Что не так делаю (целый день мучаю а сдвига нет) ?

ЗЫ
Логин и пасс в посте указаны с потолка.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 471
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 23.11.16 23:36. Заголовок: Ежели я правильно по..


Ежели я правильно понял, то может имеет смысл пользовать объект MSXML2.XMLHTTP. Смотрим гугль как делать запросы


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6128
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.11.16 10:27. Заголовок: fil пишет: Ежели я ..


fil пишет:

 цитата:
Ежели я правильно понял, то может имеет смысл пользовать объект MSXML2.XMLHTTP


Да ты верно понял.
Попробовал работает.
Спасибо , буду тестить.

Юра глянь на текст , ни чего добавить не надо ?
Вроде работает.
 
xmldoc:=win_oleCREATEOBJECT("MSXML2.XMLHTTP")

xmldoc:open("POST", HQuery["Curl"], .f.)
xmldoc:Send()
? xmldoc:ReadyState // сделать цикл пока не 4 по таймауту
? xmldoc:responseText //ответ

xmldoc:open("POST", HQuery["Curl"]+HQuery["LoginPass"], .f.)
xmldoc:Send()
? xmldoc:ReadyState // цикл пока не 4
? xmldoc:responseText //ответ

xmldoc:open("POST", HQuery["Curl"]+HQuery["GetAllTradePoints"], .f.)
xmldoc:Send()
? xmldoc:ReadyState // цикл пока не 4
? xmldoc:responseText //ответ

xmldoc:open("POST", HQuery["Curl"]+HQuery["Disconnect"], .f.)
xmldoc:Send()
? xmldoc:ReadyState // цикл пока не 4
? xmldoc:responseText //ответ


xmldoc := NIL



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1340
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.11.16 10:41. Заголовок: Dima пишет: ни чего..


Dima пишет:

 цитата:
ни чего добавить не надо ?


Если это будет передано заказчику - не хватает проверок, в т.ч. установлен ли MSXML

[url=https://msdn.microsoft.com/ru-ru/library/ms753804(v=vs.85).aspx]Создание приложений MSXML[/url]

Я, когда-то, немного поигрался этим MSXML - всякие оказии случались если с версиями не разберешся.

P.S. На предосмотре ссылку показывает правильно, а так не хочет.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6129
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.11.16 10:53. Заголовок: Петр пишет: Если эт..


Петр пишет:

 цитата:
Если это будет передано заказчику - не хватает проверок, в т.ч. установлен ли MSXML


Так это просто тест.
Первой проверкой будет
 
xmldoc:=win_oleCREATEOBJECT("MSXML2.XMLHTTP")
if ValType(xmldoc) # "O"
? "Не могу создать объект MSXML2.XMLHTTP"
endif



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6130
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.11.16 11:36. Заголовок: Дернул XML а он без ..


Дернул XML а он без переводов строки , строка на 200 кило.
Excel его конечно жует , но хотелось бы разобраться со структурой.
Как сказать объекту MSXML2.XMLHTTP что бы он делал переводы строк ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 472
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 24.11.16 12:06. Заголовок: Вот такую пррверку н..


Вот такую пррверку надо добавить

TRY
ohttp:= CreateObject( "MSXML2.XMLHTTP" )
CATCH
ohttp:= CreateObject( "microsoft.XMLHTTP" )
END

Сконнектился, запросил, прочитал и ohttp:Abort(). Я именно из-за этого на бан нарывался от Avito

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6131
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.11.16 13:30. Заголовок: fil пишет: Вот таку..


fil пишет:

 цитата:
Вот такую пррверку надо добавить


Спасибо.
А как быть с получением ответа в виде XML ?
Я пробнул xmldoc:responseXML ни чего не вернуло
А так responseText , длинная строка в виде XML но без переводов строки

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 473
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 24.11.16 14:20. Заголовок: MSXML2.XMLHTTP я исп..


MSXML2.XMLHTTP я исползовал только для получения HTML'a страниц. Ну и что, что без переводов строки, тебе на него смотреть ? Есть вроде как заточенные по XML редакторы там можно развернуть эту длинную строку в дерево


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6132
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.11.16 14:48. Заголовок: Да я же хотел после ..


Да я же хотел после эту таблицу XML разобрать и сунуть в DBF

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1343
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.11.16 14:56. Заголовок: Dima пишет: и суну..


Dima пишет:

 цитата:
и сунуть в DBF


А там зачем перевод строки?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6133
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.11.16 15:28. Заголовок: Петр пишет: А там з..


Петр пишет:

 цитата:
А там зачем перевод строки?


что бы открыть например в Far Manager и посмотреть какие тэги ловить , так как формат XML
мне не известен.
А когда все одной строкой идет , можно мозг сломать.

Впрочем ладно. Загнал ее в Excel и пересохранил.
Excel сделал переводы строк. Теперь можно разобраться.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1344
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.11.16 15:47. Заголовок: Dima пишет: можно м..


Dima пишет:

 цитата:
можно мозг сломать



Это - да, но ведь не одним ёкселем или даже фаром (при всем уважении) ..

редактор XML

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6134
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.11.16 16:13. Заголовок: Петр пишет: редакто..


Петр пишет:

 цитата:
редактор XML


Убедил
Надо будет качнуть.
Просто с XML редко дело имею , поэтому использовал то что есть.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6145
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.11.16 09:27. Заголовок: Каким образом сказат..


Каким образом сказать xmldoc:responseText что бы текст он вернул в кодировке UTF8 ?
Пока пришлось сделать так
hb_cdpSelect( "UTF8" )
cc:=xmldoc:responseText
hb_cdpSelect( "RU866" )


Пробовал так , не работает
xmldoc:SetRequestHeader( "Content-Type","application/x-www-form-urlencoded; charset=UTF-8" )

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1349
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.11.16 13:33. Заголовок: Там очень много букв..


Там очень много букв, но если осилите
сможете рассказать и другим

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6146
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.11.16 16:28. Заголовок: Петр У меня в проге..


Петр
У меня в проге 866 кодировка
REQUEST HB_CODEPAGE_RU866,HB_CODEPAGE_UTF8 ,HB_CODEPAGE_UTF8EX
hb_cdpSelect( "RU866" )

responseText если я верно понял , возвращает строку в кодировке UTF-8 по умолчанию.
По факту вернул строку в кодировке RU866 , хотя и в заголовке принятого XML написано UTF-8
Пробнул еще xmldoc:SetRequestHeader( "Content-Type","text/xml;charset=UTF-8" ) , ни чего не дало.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1350
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.11.16 19:34. Заголовок: Dima пишет: меня в..


Dima пишет:

 цитата:
меня в проге 866 кодировка
REQUEST HB_CODEPAGE_RU866,HB_CODEPAGE_UTF8 ,HB_CODEPAGE_UTF8EX
hb_cdpSelect( "RU866" )



А если установить hb_cdpSelect( "UTF8" ) какой результат получится?



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6148
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.11.16 22:19. Заголовок: Петр пишет: А если ..


Петр пишет:

 цитата:
А если установить hb_cdpSelect( "UTF8" ) какой результат получится?


Тогда все нормально. Будет в UTF8.

Такое впечатление что возврат идет в кодировке установленной мануально.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1351
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.11.16 23:05. Заголовок: Dima пишет: Такое в..


Dima пишет:

 цитата:
Такое впечатление что возврат идет в кодировке установленной мануально.



Это как?
Так и есть: msxml оперирует данными в U16, через механизм ole и виртуальную harbour машину, кодировка приводится к вот этой самой "установленной мануально". Как это работает можете рассмотреть в olecore.c.
А можете не рассматривать - примите как факт.









Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6149
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.11.16 23:29. Заголовок: Ясно...буду пока юза..


Ясно...буду пока юзать костыль ))
hb_cdpSelect( "UTF8" )
cc:=xmldoc:responseText
hb_cdpSelect( "RU866" )

Работает.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1352
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.11.16 23:33. Заголовок: Dima пишет: Ясно.....


Dima пишет:

 цитата:
Ясно...буду пока юзать костыль


Вот это не костыль. Так работает поддержка национальных кодировок в harbour.

Зачем сразу в RU866 переходить?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6150
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.11.16 23:36. Заголовок: Петр пишет: Зачем с..


Петр пишет:

 цитата:
Зачем сразу в RU866 переходить?


Ну как бы базы в ней живут да и код сырцов.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1353
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 28.11.16 23:42. Заголовок: Понятно, по привычке..


Понятно, по привычке.
Я думал, проблемы с разбором строк, в harbour куча функций для работы с строками UTF8 и Unicode, привыкнуть можно.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6151
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.11.16 23:46. Заголовок: Петр Спасибо за жел..


Петр
Спасибо за желание помочь !

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 503
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 10.05.17 17:03. Заголовок: Dima, смог ли ты пол..


Dima, смог ли ты получить XML-документ (responseXML) ?
Я делаю так
...........................................
ohttp:setRequestHeader( 'Content-Type', 'text/xml')
ohttp:Send(NIL)

do while .T.
if ohttp:readyState=4.and.ohttp:Status=200
? ohttp:getResponseHeader("content-type") - возвращает 'text/html', ну и соответственно
responseXML - nill. В чем засада не пойму



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6419
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.05.17 17:55. Заголовок: fil У меня так приме..


fil У меня так примерно
 
xmldoc:open("POST", HQuery["Curl"]+HQuery["Disconnect"], .f.)
xmldoc:Send()
ntime:=Seconds()
do while xmldoc:ReadyState != 4
hb_releaseCPU()
if ABS( Seconds() - nTime ) >= ntimeout
ret[3]:="Сервер не отвечает"
xmldoc:abort()
xmldoc := NIL
return ret
endif
enddo
cret:=xmldoc:responseText



c этим я игрался ohttp:setRequestHeader( 'Content-Type', 'text/xml' , и наигравшись забил )

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 504
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 10.05.17 23:47. Заголовок: Ну responseText мне ..


Ну responseText мне ни к чему. Хотел добраться до responseXML-документа и парсить его
посредством DOM. Побьюсь еще. Уж больно неохота через ActiveX делать

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6420
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.05.17 08:25. Заголовок: Dima пишет: cret:=x..


Dima пишет:

 цитата:
cret:=xmldoc:responseText


Так я тут XML и получаю.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 505
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 11.05.17 09:17. Заголовок: Ты получаешь XML-лев..


Ты получаешь XML-левский текст, а мне нужен Document Object Model (DOM) страницы.
Или я чего не понял ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6421
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.05.17 09:31. Заголовок: fil пишет: Ты получ..


fil пишет:

 цитата:
Ты получаешь XML-левский текст


да

fil пишет:

 цитата:
а мне нужен Document Object Model (DOM) страницы.


Тут ни чего не скажу , не юзал

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 33 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 16
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет