Я запускаю запрос POST для отдыха, и я получаю эту ошибку при компиляции:
Caught: java.lang.IllegalArgumentException: No encoder found for request content type */*
Вот мой код:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7' )
import groovyx.net.http.RESTClient
def client = new RESTClient( 'http://localhost' )
def resp = client.post( path : '/services/adi/validateadimeta/fromfile',body : [ file:'foo' ] )
Я не уверен, что ответ на него или нет, может быть, проблема с ранжированием с ответом? */*
Меня беспокоит, что он даже не установил связь. Когда я запускаю это как команду CURL на командной строке, он отлично работает. file
является единственным параметром, необходимым для этого почтового вызова.
благодаря
Обратитесь к документации на http-builder
. В частности,
Поскольку мы никогда не устанавливаем тип содержимого по умолчанию в экземпляре RESTClient или не передаем аргумент contentType в этом запросе, RESTClient поместит Accept:/в заголовок запроса и проанализирует ответ на основании того, что указано в заголовке заголовка ответа ответа.
Modify, post()
как показано ниже:
@Grab('org.codehaus.groovy.modules.http-builder:'http-builder:0.7' )
import groovyx.net.http.RESTClient
import static groovyx.net.http.ContentType.*
def client = new RESTClient( 'http://localhost' )
def resp = client.post(
path: '/services/adi/validateadimeta/fromfile',
body : [ file : 'foo' ],
requestContentType : JSON
)
JSON
ссылается на groovyx.net.http.ContentType.JSON
. Пожалуйста, обратитесь github.com/jgritman/httpbuilder/blob/master/src/main/java/… @aamir
Когда я добавляю " requestContentType: JSON ", он возвращает " Плохой запрос ". Он изменился на " requestContentType: URLENC ", он работает для меня.
Прочитайте документацию RESTClient, которую он объяснил мне
Обратите внимание, что приведенный выше пример представляет данные запроса как application/x-www-form-urlencoded. (API-интерфейс twitter не поддерживает запросы XML или JSON POST.) По этой причине необходимо указать параметр requestContentType, чтобы определить, как должен обрабатываться тело запроса.
Поскольку мы никогда не устанавливаем тип содержимого по умолчанию в экземпляре RESTClient или не передаем аргумент contentType в этом запросе, RESTClient поместит Accept:/в заголовок запроса и проанализирует ответ на основании того, что указано в заголовке заголовка ответа ответа. Так как Twitter правильно идентифицирует свой ответ как application/json, он автоматически анализируется парсером JSON по умолчанию.
Accept
?