GROOVY RESTClient: не найден кодировщик для типа содержимого запроса * / *

1

Я запускаю запрос 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 является единственным параметром, необходимым для этого почтового вызова.

благодаря

  • 0
    Вы пытались добавить заголовок Accept ?
Теги:
groovy
rest

2 ответа

6

Обратитесь к документации на 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 
)
  • 0
    Я публикую это после некоторого исследования; так как у меня были проблемы с указанием типа контента как «JSON», то есть все заглавные буквы. Моя проблема была решена путем изменения requestContentType: JSON на requestContentType: application / json.
  • 1
    Это не строка. JSON ссылается на groovyx.net.http.ContentType.JSON . Пожалуйста, обратитесь github.com/jgritman/httpbuilder/blob/master/src/main/java/… @aamir
0

Когда я добавляю " requestContentType: JSON ", он возвращает " Плохой запрос ". Он изменился на " requestContentType: URLENC ", он работает для меня.

Прочитайте документацию RESTClient, которую он объяснил мне

Обратите внимание, что приведенный выше пример представляет данные запроса как application/x-www-form-urlencoded. (API-интерфейс twitter не поддерживает запросы XML или JSON POST.) По этой причине необходимо указать параметр requestContentType, чтобы определить, как должен обрабатываться тело запроса.

Поскольку мы никогда не устанавливаем тип содержимого по умолчанию в экземпляре RESTClient или не передаем аргумент contentType в этом запросе, RESTClient поместит Accept:/в заголовок запроса и проанализирует ответ на основании того, что указано в заголовке заголовка ответа ответа. Так как Twitter правильно идентифицирует свой ответ как application/json, он автоматически анализируется парсером JSON по умолчанию.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню