Невозможно использовать CURL в скрипте GROOVY для вызова REST PUT - PullRequest
4 голосов
/ 06 января 2012

Я пытаюсь сделать простой запрос PUT, используя CURL.Просто он на терминале, но не может заставить его работать в моем скрипте Groovy.

Вот его фрагмент: -

class Test {
  //Throws 415 Cannot Consume Content Type    
  void testPUT () {
  println "curl -i -X PUT -H \"Content-Type: application/json\" -d '{\"Key1\":1, \"Key2\":\"Value2\"}' http://<hostname>/foo/".execute().text
 }

  // Works Perfectly Fine
  void testGET () {
  println "curl -i -X GET -H \"Content-Type: application/json\" http://<hostname>/foo".execute().text
 }
}

Я также попытался заключить команду с помощью тройногоцитаты типа: -

 """curl -i -X PUT -H "Content-Type:application/json" -d '{"Key1":1,"Key2":"Value2"}' http://<hostname>/foo""".execute().text

Все мои попытки просто дают 415 Тип контента не может быть использован

Когда я просто использую команду curl в окне терминала, оба метода PUT и GET работают нормально.

Я что-то упустил?Буду признателен за любую помощь!

Спасибо!

Ответы [ 5 ]

7 голосов
/ 11 апреля 2013

Попробуйте использовать вариант списка в строке и посмотрите, работает ли он:

println ["curl", "-i", "-X PUT", "-H 'Content-Type:application/json'", "-d '{\"Key1\":1, \"Key2\":\"Value2\"}'", "http://<hostname>/foo/"].execute().text

У меня была похожая проблема, и это был единственный способ, который я смог найти, чтобы решить ее.Groovy будет разбивать строку на аргументы в каждом пространстве, и я подозреваю, что это приводило к отключению пары аргументов Curl и -H.Помещая строку в вариант списка, он сохраняет каждый элемент в качестве аргумента.

3 голосов
/ 23 апреля 2015

Опираясь на ответ Брюса, вам также понадобится токенизировать "-X PUT". Проверено на заводной 2.3.6. ["curl", "-H", "Content-Type: application/json", "-H", "Accept: application/json", "-X", "PUT", "-d", data, uri].execute()

0 голосов
/ 29 августа 2016

Сначала я установил плагин groovy post build

https://wiki.jenkins -ci.org / display / JENKINS / Groovy + Postbuild + Plugin

Затем я включилgroovy плагин пост сборки в моей пост сборки конфигурации моего задания jenkins

и используется команда

"curl --request POST http://172.16.100.101:1337/jenkins/build".execute().text 

Здесь моей конечной точкой является http: 172.16.100.101: 1337 / jenkins / build

0 голосов
/ 30 сентября 2013

Спасибо xynthy за подсказку по изменению списка, я все еще видел ужас «Тип контента« application / x-www-form-urlencoded »не поддерживается» с вашим примером, но разбиение строк -H и типов контента сработало.

Это подтверждается работой в Groovy 1.8:

["curl",  "-H", "Content-Type: application/json", "-H", "Accept: application/json", "-X PUT", "-d", data, uri].execute().text
0 голосов
/ 10 января 2012

Это работает в моем терминале

groovy -e "println 'curl -i -H \'Content-Type:application/json\' -XPUT -d \'{\"test\":4}\' http://google.fr/'.execute().text"

Если это не работает для вас, то это, вероятно, не заводная проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...