Автор | Сообщение |
|
| |
Пост 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 с параметрами сессии, для использования при отсылке следующих запросов. При успешном коннекте должен быть получен ответ «ок» - подключение прошло успешно. Собственно как слать такие запросы и как ловить ответы ?
|
|
|
Ответов - 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
|
|
|
|
| |
Пост N: 5991
Зарегистрирован: 17.05.05
|
|
Отправлено: 02.09.16 17:46. Заголовок: Петр Понял , спасиб..
Петр Понял , спасибо , буду смотреть.
|
|
|
|
| |
Пост 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 работает , остальные нет. Что не так делаю (целый день мучаю а сдвига нет) ? ЗЫ Логин и пасс в посте указаны с потолка.
|
|
|
|
| |
Пост N: 471
Зарегистрирован: 17.06.10
|
|
Отправлено: 23.11.16 23:36. Заголовок: Ежели я правильно по..
Ежели я правильно понял, то может имеет смысл пользовать объект MSXML2.XMLHTTP. Смотрим гугль как делать запросы
|
|
|
|
| |
Пост 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
|
|
|
|
| постоянный участник
|
Пост 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. На предосмотре ссылку показывает правильно, а так не хочет.
|
|
|
|
| |
Пост N: 6129
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.11.16 10:53. Заголовок: Петр пишет: Если эт..
Петр пишет: цитата: | Если это будет передано заказчику - не хватает проверок, в т.ч. установлен ли MSXML |
| Так это просто тест. Первой проверкой будет xmldoc:=win_oleCREATEOBJECT("MSXML2.XMLHTTP") if ValType(xmldoc) # "O" ? "Не могу создать объект MSXML2.XMLHTTP" endif
|
|
|
|
| |
Пост N: 6130
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.11.16 11:36. Заголовок: Дернул XML а он без ..
Дернул XML а он без переводов строки , строка на 200 кило. Excel его конечно жует , но хотелось бы разобраться со структурой. Как сказать объекту MSXML2.XMLHTTP что бы он делал переводы строк ?
|
|
|
|
| |
Пост N: 472
Зарегистрирован: 17.06.10
|
|
Отправлено: 24.11.16 12:06. Заголовок: Вот такую пррверку н..
Вот такую пррверку надо добавить TRY ohttp:= CreateObject( "MSXML2.XMLHTTP" ) CATCH ohttp:= CreateObject( "microsoft.XMLHTTP" ) END Сконнектился, запросил, прочитал и ohttp:Abort(). Я именно из-за этого на бан нарывался от Avito
|
|
|
|
| |
Пост N: 6131
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.11.16 13:30. Заголовок: fil пишет: Вот таку..
fil пишет: цитата: | Вот такую пррверку надо добавить |
| Спасибо. А как быть с получением ответа в виде XML ? Я пробнул xmldoc:responseXML ни чего не вернуло А так responseText , длинная строка в виде XML но без переводов строки
|
|
|
|
| |
Пост N: 473
Зарегистрирован: 17.06.10
|
|
Отправлено: 24.11.16 14:20. Заголовок: MSXML2.XMLHTTP я исп..
MSXML2.XMLHTTP я исползовал только для получения HTML'a страниц. Ну и что, что без переводов строки, тебе на него смотреть ? Есть вроде как заточенные по XML редакторы там можно развернуть эту длинную строку в дерево
|
|
|
|
|
| |
Пост N: 6132
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.11.16 14:48. Заголовок: Да я же хотел после ..
Да я же хотел после эту таблицу XML разобрать и сунуть в DBF
|
|
|
|
| постоянный участник
|
Пост N: 1343
Зарегистрирован: 09.10.06
|
|
Отправлено: 24.11.16 14:56. Заголовок: Dima пишет: и суну..
Dima пишет: А там зачем перевод строки?
|
|
|
|
| |
Пост N: 6133
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.11.16 15:28. Заголовок: Петр пишет: А там з..
Петр пишет: цитата: | А там зачем перевод строки? |
| что бы открыть например в Far Manager и посмотреть какие тэги ловить , так как формат XML мне не известен. А когда все одной строкой идет , можно мозг сломать. Впрочем ладно. Загнал ее в Excel и пересохранил. Excel сделал переводы строк. Теперь можно разобраться.
|
|
|
|
| постоянный участник
|
Пост N: 1344
Зарегистрирован: 09.10.06
|
|
Отправлено: 24.11.16 15:47. Заголовок: Dima пишет: можно м..
Dima пишет: Это - да, но ведь не одним ёкселем или даже фаром (при всем уважении) .. редактор XML
|
|
|
|
| |
Пост N: 6134
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.11.16 16:13. Заголовок: Петр пишет: редакто..
Петр пишет: Убедил Надо будет качнуть. Просто с XML редко дело имею , поэтому использовал то что есть.
|
|
|
|
| |
Пост 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" )
|
|
|
|
| постоянный участник
|
Пост N: 1349
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.11.16 13:33. Заголовок: Там очень много букв..
|
|
|
|
| |
Пост 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" ) , ни чего не дало.
|
|
|
|
| постоянный участник
|
Пост 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" ) какой результат получится?
|
|
|
|
| |
Пост N: 6148
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.11.16 22:19. Заголовок: Петр пишет: А если ..
Петр пишет: цитата: | А если установить hb_cdpSelect( "UTF8" ) какой результат получится? |
| Тогда все нормально. Будет в UTF8. Такое впечатление что возврат идет в кодировке установленной мануально.
|
|
|
|
|
| постоянный участник
|
Пост N: 1351
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.11.16 23:05. Заголовок: Dima пишет: Такое в..
Dima пишет: цитата: | Такое впечатление что возврат идет в кодировке установленной мануально. |
| Это как? Так и есть: msxml оперирует данными в U16, через механизм ole и виртуальную harbour машину, кодировка приводится к вот этой самой "установленной мануально". Как это работает можете рассмотреть в olecore.c. А можете не рассматривать - примите как факт.
|
|
|
|
| |
Пост N: 6149
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.11.16 23:29. Заголовок: Ясно...буду пока юза..
Ясно...буду пока юзать костыль )) hb_cdpSelect( "UTF8" ) cc:=xmldoc:responseText hb_cdpSelect( "RU866" ) Работает.
|
|
|
|
| постоянный участник
|
Пост N: 1352
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.11.16 23:33. Заголовок: Dima пишет: Ясно.....
Dima пишет: цитата: | Ясно...буду пока юзать костыль |
| Вот это не костыль. Так работает поддержка национальных кодировок в harbour. Зачем сразу в RU866 переходить?
|
|
|
|
| |
Пост N: 6150
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.11.16 23:36. Заголовок: Петр пишет: Зачем с..
Петр пишет: цитата: | Зачем сразу в RU866 переходить? |
| Ну как бы базы в ней живут да и код сырцов.
|
|
|
|
| постоянный участник
|
Пост N: 1353
Зарегистрирован: 09.10.06
|
|
Отправлено: 28.11.16 23:42. Заголовок: Понятно, по привычке..
Понятно, по привычке. Я думал, проблемы с разбором строк, в harbour куча функций для работы с строками UTF8 и Unicode, привыкнуть можно.
|
|
|
|
| |
Пост N: 6151
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.11.16 23:46. Заголовок: Петр Спасибо за жел..
Петр Спасибо за желание помочь !
|
|
|
|
| |
Пост 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. В чем засада не пойму
|
|
|
|
| |
Пост 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' , и наигравшись забил )
|
|
|
|
| |
Пост N: 504
Зарегистрирован: 17.06.10
|
|
Отправлено: 10.05.17 23:47. Заголовок: Ну responseText мне ..
Ну responseText мне ни к чему. Хотел добраться до responseXML-документа и парсить его посредством DOM. Побьюсь еще. Уж больно неохота через ActiveX делать
|
|
|
|
| |
Пост N: 6420
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.05.17 08:25. Заголовок: Dima пишет: cret:=x..
Dima пишет: цитата: | cret:=xmldoc:responseText |
| Так я тут XML и получаю.
|
|
|
|
|
| |
Пост N: 505
Зарегистрирован: 17.06.10
|
|
Отправлено: 11.05.17 09:17. Заголовок: Ты получаешь XML-лев..
Ты получаешь XML-левский текст, а мне нужен Document Object Model (DOM) страницы. Или я чего не понял ?
|
|
|
|
| |
Пост N: 6421
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.05.17 09:31. Заголовок: fil пишет: Ты получ..
fil пишет: цитата: | Ты получаешь XML-левский текст |
| да fil пишет: цитата: | а мне нужен Document Object Model (DOM) страницы. |
| Тут ни чего не скажу , не юзал
|
|
|
Ответов - 33
, стр:
1
2
All
[только новые]
|
|