HHTP запросы в LUA и проблема с 32-битной версией библиотеки LuaSocket

Страницы: 1
RSS
HHTP запросы в LUA и проблема с 32-битной версией библиотеки LuaSocket
 
Добрый день!
Моему скрипту на 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
 
У меня есть сборка для 32 бита.
Там есть пример отправки запроса с использованием cURL. Но можно и руками отправлять, только с Socket
https://github.com/nick-nh/qlua/tree/master/lua_socket_ssl
 
Цитата
Nikolay написал:
Но можно и руками отправлять, только с Socket
Ох, не советуйте таких вещей. Многие сайты хотят только тлс, многие ставят куку и делают редирект, некоторые особо одаренные даже жабаскриптом это делают. Все это в общем случае придется обрабатывать. Прошли времена простого веба, сейчас лучше готовую либу заюзать, если, конечно, задача прикладная, а не хорошенько протоколы изучить.
 
Цитата
Anton написал:
Цитата
Nikolay написал:
Но можно и руками отправлять, только с Socket
Ох, не советуйте таких вещей. Многие сайты хотят только тлс, многие ставят куку и делают редирект, некоторые особо одаренные даже жабаскриптом это делают. Все это в общем случае придется обрабатывать. Прошли времена простого веба, сейчас лучше готовую либу заюзать, если, конечно, задача прикладная, а не хорошенько протоколы изучить.
Данные с собственного сайта на самом деле берутся, просто решил их пока выводить на отдельную html страничку и lua-скриптом подцеплять. Так что с этим проблем нет и подойдет любое решение. Просто кажется странным, что ради такого примитивного функционала необходимо смотреть чужой проект и выбирать оттуда нужный кусок
 
Цитата
Андрей А написал:
Просто кажется странным
это вовсе не странно, тк
Цитата
Андрей А написал:
просто решил их пока выводить на отдельную html страничку
вот это реально странно

что выглядит как "просто" , но делает всё это сложным

зарядите сокет-сервер и с него гоните дату
 
Цитата
Андрей А написал:
подойдет любое решение
Тогда можно и голым сокетом дернуть, только заголовки указать 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, которую для теста скачал с сайта своего брокера, но для меня важно чтобы решение работало в любой версии квика, поэтому такой вариант отбросил
 
Добрый день.
Вы используете 32-битные версии библиотек с новым 8.0+ (64-битным) терминалом.

Вам нужно найти или самим собрать из исходников 64-битнные версии библиотек группы socket.

https://forum.quik.ru/forum1/topic4529/

 
Спасибо, Егор, я думал в этом же направлении.
Выкачал с 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
Гугл интерпретирует эту ошибку как "параллельная конфигурация неправильна"
Как побороть эту ошибку?
 
Цитата
Вадим написал:
Выкачал
Подпись от Autodesk вообще никак не напрягла? Это вообще другая длл.
 
А не знаете, где можно найти "правильный" dll?  
 
Цитата
Вадим написал:
где
Ну например несколькими темами ниже https://forum.quik.ru/messages/forum10/message40322/topic4609/#message40322
Страницы: 1
Читают тему (гостей: 1)
Наверх