У меня нет опыта программирования, как это сделать, любая помощь будет принята с благодарностью

Таким образом, есть команда, которая, если я вставлю в свой браузер, она выполнится, и работа будет выполнена. Это запрос JSON API, который подключается к локальному хосту к приложению, прослушивающему порт 8080, команда (1) описана ниже

http://localhost:8080/jsonrpc?request={"jsonrpc":%20"2.0",%20"id":%201,%20"method":"System.Shutdown"}

Когда я вставляю этот код в браузер «как есть», он выполняет ожидаемое завершение работы системы (при условии, что прослушивающая программа работает)

У меня возникли проблемы с преобразованием этой команды в командный файл, который можно выполнить с помощью планировщика задач или простого двойного щелчка. Я пробовал команду ниже (2) в командном файле с использованием CMD, но он просто игнорирует кавычки, и в результате я получаю ошибку синтаксического анализа (3).

CMD команда (2)

start http://localhost:8080/jsonrpc?request={"jsonrpc":%20"2.0",%20"id":%201,%20"method":"System.Shutdown"}

Результирующая ошибка (3)

{"error":{"code":-32700,"message":"Parse error."},"id":null,"jsonrpc":"2.0"}

и URL выглядит так (4)

http://localhost:8080/jsonrpc?request={jsonrpc:02.0,0id:01,0method:System.Shutdown}

Все приведенные выше кавычки (4) пропали, я полагаю, запросы JSON API (я думаю, что они так называются) чувствительны к такого рода проблемам.

Я пробовал команду (1) в powershell, и она не будет иметь его. Результирующая ошибка ниже (5)

В строке: 1 символ: 49 + http://localhost: 8080/jsonrpc? Request = {"jsonrpc":% 20 "2.0",% 20 "id":% 20 ... + ~~~~~~~~~ Неожиданный токен ':% 20 "2.0"' в выражении или выражении. В строке: 1 символ: 58 + http://localhost: 8080/jsonrpc? Request = {"jsonrpc":% 20 "2.0",% 20 "id":% 20 ... + ~ Отсутствует аргумент в списке параметров. + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: UnexpectedToken

Все, что мне нужно, - это скрипт, который при двойном щелчке или запуске с использованием планировщика задач выполнит и выдаст эту команду (1) на локальный хост, т.е. вставит команду как есть в браузер или пропустит браузер и сразу перейдет.

Я собираюсь признаться, что я полный нуб в этом, так что простое пошаговое руководство о том, как настроить это, будет огромной помощью. Хотя я совершенно уверен, что для многих из вас это прямое задание :) Я с нетерпением жду ваших ответов.

2 ответа2

0

Я вижу некоторые проблемы:

  1. для начала нужна фиктивная пара двойных кавычек для заголовка
  2. cmd интерпретирует все знаки процента как включающие переменные, => удваивает их, чтобы избежать.
  3. двойная кавычка весь URL и экранирование внутренних с обратной косой чертой

так что постарайтесь:

start "" "http://localhost:8080/jsonrpc?request={\"jsonrpc\":%%20\"2.0\",%%20\"id\":%%201,%%20\"method\":\"System.Shutdown\"}"
0

Хотя я не знаком с использованием JSON в powershell, я думаю, что ниже следует сделать то, что вы просите.

К сожалению, у меня нет среды, в которой я могу это проверить.

$JSON = '{"jsonrpc":"2.0","id":1,"method":"System.Shutdown"}'
Invoke-WebRequest -Uri "http://localhost:8080/jsonrpc" -Body $JSON -Method POST  -ContentType "application/json"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .