2015-11-09 2 views
-1

У меня есть код Parser.groovy файла:Выполните скручивание с помощью заводной

def json = """{ 
     "description": "string", 
     "mode": "DEFAULT", 
     "name": "string", 
     "start_time": "2015-11-05T13:26:40.626Z", 
     "tags": [ 
       "string" 
     ] 
    }""" 
    process = ["curl", "-k", "--user", "user:pass", "-X", "POST", "-H", "Content-Type: application/json", "-d", "${json}", "https://<api_uri>/launch"].execute().text 

Когда я исполню его, я получаю это исключение:

Caught: java.io.IOException: Cannot run program "curl": CreateProcess error=2, The system cannot find the file specified 
java.io.IOException: Cannot run program "curl": CreateProcess error=2, The system cannot find the file specified 
    at Parser.run(Parser.groovy:19) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified 
    ... 2 more 

Что я делаю не так? Я новичок в groovy, пожалуйста, объясните мне свою ошибку.

+0

Это все в сообщении об ошибке «Система не может найти указанный файл». Где скручивание? На пути? Какой-то специальный каталог? Либо установите переменную пути соответственно, либо используйте полный путь к exe. – Marged

+0

Кроме того: вы можете столкнуться с проблемами при передаче вашего json до завивки. Возможно, лучше хранить JSON в файле и просмотреть curl этот файл. Я думаю, что это можно сделать с помощью '@' – Marged

+0

спасибо, разумно –

ответ

1

Ваша программа не может найти curl.exe. Либо указать полный путь ...

process = ["c:\\whatever\\curl", "-k", "--user" ... 

... или установить переменные окружения PATH соответственно перед вызовом программы:

set path=C:\whatever;%path% 

Кроме того, что это может быть более стабильным, чтобы использовать библиотеку для HTTP/url. Я не буду рекомендовать его, но я уверен, что здесь вы найдете множество примеров.

2

Вы должны быть в состоянии сделать это с помощью обычной заводной и wslite библиотеки:

@Grab('com.github.groovy-wslite:groovy-wslite:1.1.2') 
import wslite.http.auth.* 
import wslite.rest.* 

def client = new RESTClient("https://<api_uri>/") 
client.authorization = new HTTPBasicAuthorization("user", "pass") 
def response = client.post(path: "/launch",headers: ['Content-Type': 'application/json']) { 
    json description: "string", mode: "DEFAULT", name: "string", start_time: "2015-11-05T13:26:40.626Z", tags: [ "string" ] 
} 
Смежные вопросы