Добрый день! Моему скрипту на LUA требуются внешние данные, которые присутствуют на web-странице. В связи с этим пытаюсь найти способ сделать http-запрос. Поиски в интернете и в том числе на этом форуме привели к выводу, что нужно использовать библиотеку LuaSocket. Разобрал следующую тему и сделал всё как рекомендовано: https://forum.quik.ru/messages/forum10/message20352/topic2286 В итоге получаю ошибку "error loading module 'socket.core' from file 'C:\BCS_Work\QUIK_BCS\Include\socket\core.dll': %1 не является приложением Win32.". Похоже, что для моей версии QUIK (8.1.0.30) нужна 64-битная версия библиотеки, но такую в открытом доступе найти не получается.
Прилагаю свой код, буду признателен за помощь. Интересует получение кода web-страницы из скрипта любым способом, использование именно этой библиотеки не принципиально
Код
package.cpath = getScriptPath() .. "\\<CDIR>\\?.dll;" .. package.cpath
package.path = getScriptPath() .. "\\<LDIR>\\?.lua;" .. package.path
local address = 'http://***some_url***'
function main ()
while true do
sleep (5000)
do_smart ()
end
end
function do_smart ()
local http_request = require ( "socket.smtp" )
local headers, stream = assert(http_request.new_from_uri(address):go())
local body = assert(stream:get_body_as_string())
end
Nikolay написал: Но можно и руками отправлять, только с Socket
Ох, не советуйте таких вещей. Многие сайты хотят только тлс, многие ставят куку и делают редирект, некоторые особо одаренные даже жабаскриптом это делают. Все это в общем случае придется обрабатывать. Прошли времена простого веба, сейчас лучше готовую либу заюзать, если, конечно, задача прикладная, а не хорошенько протоколы изучить.
Nikolay написал: Но можно и руками отправлять, только с Socket
Ох, не советуйте таких вещей. Многие сайты хотят только тлс, многие ставят куку и делают редирект, некоторые особо одаренные даже жабаскриптом это делают. Все это в общем случае придется обрабатывать. Прошли времена простого веба, сейчас лучше готовую либу заюзать, если, конечно, задача прикладная, а не хорошенько протоколы изучить.
Данные с собственного сайта на самом деле берутся, просто решил их пока выводить на отдельную html страничку и lua-скриптом подцеплять. Так что с этим проблем нет и подойдет любое решение. Просто кажется странным, что ради такого примитивного функционала необходимо смотреть чужой проект и выбирать оттуда нужный кусок
Тогда можно и голым сокетом дернуть, только заголовки указать Host: yoursite.com и Connection: close, дабы апач с ума не сходил. Но, как верно сказано выше, зачем html страница тогда, отдавайте сразу плейнтекст, протоколу-то все равно что качать, для него единица "файл" и содержимым он не интересуется.
Присоединяюсь к изначальному вопросу. Имею на 64-битной Win10 ту же самую диагностику при обращении http = require('socket.http') Существуют какие-то решения данной проблемы, господа Знатоки?
Вадим написал: Присоединяюсь к изначальному вопросу. Имею на 64-битной Win10 ту же самую диагностику при обращении http = require('socket.http') Существуют какие-то решения данной проблемы, господа Знатоки?
Я в итоге не разобрался ни с проблемой, ни с советами, попробовал как альтернативу настроить подключение из скрипта к базе MySQL и столкнулся с той же самой проблемой (не является приложением Win32) при подключении библиотеки. В итоге отказался от использования библиотек LUA и решил создать на другом языке небольшую программу, которую LUA-скрипт будет запускать как .exe, когда ему нужно, и забирать из текстового файла итоги его работы (данные выкачанные с web-страницы). Также Lua-библиотеки работали в 32-битной версии QUIK, которую для теста скачал с сайта своего брокера, но для меня важно чтобы решение работало в любой версии квика, поэтому такой вариант отбросил
Спасибо, Егор, я думал в этом же направлении. Выкачал с http://www.dlldownloader.com/core-dll/ вроде бы то, что нужно, как там сказано - версия core.dll для Win64, но при выполнении инструкции http = require("socket.http") в qlua-скрипте возникает ошибка error loading module 'socket.core' from file '.\socket\core.dll': system error 14001 Гугл интерпретирует эту ошибку как "параллельная конфигурация неправильна" Как побороть эту ошибку?