GROOVY RESTClient:找不到请求内容类型的编码器*/*

use*_*310 2 java api rest groovy

我正在运行一个休息POST请求,我在编译时收到此错误:

Caught: java.lang.IllegalArgumentException: No encoder found for request content type */*
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

@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' ] )
Run Code Online (Sandbox Code Playgroud)

我不确定它是否响应可能是响应的重编码问题?该*/*有我担心,它甚至没有进行连接.当我在命令行上将其作为CURL命令运行时,它可以正常工作. file是此帖子调用所需的唯一参数.

谢谢

dma*_*tro 8

请参阅文档http-builder.特别,

由于我们从未在RESTClient实例上设置默认内容类型或在此请求中传递contentType参数,因此RESTClient会将Accept:/放入请求标头中,并根据响应内容类型标头中给出的内容解析响应.

修改,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 
)
Run Code Online (Sandbox Code Playgroud)

  • 它不是字符串。JSON是指groovyx.net.http.ContentType.JSON。请参考https://github.com/jgritman/httpbuilder/blob/master/src/main/java/groovyx/net/http/ContentType.java#L58 @aamir (2认同)