Nano Hash - криптовалюты, майнинг, программирование

Попытка связаться со службой REST с помощью NSIS

Все, что я пытаюсь сделать, это отправить HTTP GET с Querystring или HTTP POST в веб-службу с пользовательской страницы в установщике NSIS.

Проблема в том, что большинство плагинов могут загружать/загружать файлы, а не просто вызывать сервис и возвращать ответ. Рекомендуемый плагин для использования — NsisUrlLib. Я попробовал это, и хотя он работает с простыми запросами GET, он терпит неудачу и выдает ошибку, если у вас есть параметры строки запроса в URL-адресе, например:

NsisUrlLib::UrlOpen /NOUNLOAD "http://tc.hwidev.com?var=value"
Pop $connectResult

NSISdl, INetC и другие плагины работают со строками запросов, но их можно использовать только для загрузки/выгрузки файлов.

Я попытался использовать плагин ExecDos для вызова cURL.exe из командной строки следующим образом:

ExecDos::exec /TOSTACK "curl" "http://tc.hwidev.com"
Pop $connectResult

Но я не могу понять, как получить данные, возвращаемые с URL-адреса, переданного обратно в NSIS. Приведенный выше код просто возвращает целое число в $connectResult, которое, вероятно, представляет собой код возврата из CURL. Как получить фактический HTML-код, возвращенный из URL-адреса, в стек NSIS или в переменную?

В качестве альтернативы, может ли кто-нибудь порекомендовать лучший способ сделать это? Вызов веб-сервиса кажется настолько простым, что тысячи людей уже должны были понять это.

22.03.2013

Ответы:


1

NSISdl, Inetc и т. д. предназначены не только для загрузки/выгрузки файлов. Я думаю, вы неправильно понимаете этот момент. Вы можете использовать их для вызова API REST, но вам нужно будет сохранить ответ в локальный файл, а затем проанализировать его.

Пример: вызов API REST, который отвечает XML:

# Call to REST API
NSISdl::download_quiet "http://remotesite?restparams" "$TEMP/result.xml"

# Parse answer
nsisXML::create
nsisXML::load "$TEMP/result.xml"
nsisXML::select "/response/status"

# Clean
delete "$TEMP/result.xml"

Вот и все.

25.03.2013
  • Конечно, я рекомендую вам создавать макросы, чтобы ваш код оставался чистым. 25.03.2013

  • 2
    NSISdl::download_quiet "http://127.0.0.1/vid.php?vid=1" "$TEMP/checkvid.txt"   
    
    FileOpen $0 $TEMP\checkvid.txt r
    
    FileRead $0 $1
    
    DetailPrint $1
    
    FileClose $0
    
    ${If} $1 == "vidNTYE1203"
    
    MessageBox MB_OK "video found"
    
    Delete "$TEMP\checkvid.txt"         
    
    ${Else} 
    
    MessageBox MB_OK  "bye bye"
    
    Delete "$TEMP\checkvid.txt"
    
    Quit 
    
    ${EndIf}
    

    Это мой рабочий фрагмент для производства. Работает хорошо, для меня. Обратите внимание на команду «Удалить» и косую черту «\».

    25.01.2017

    3

    Я бы порекомендовал INetC вместо NsisUrlLib, старый установщик firefox использовал его с большим успехом.

    22.03.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..