Java GROOVY RESTClient:未找到请求内容类型的编码器*/*
我正在运行rest POST请求,在编译时出现以下错误:Java GROOVY RESTClient:未找到请求内容类型的编码器*/*,java,api,rest,groovy,Java,Api,Rest,Groovy,我正在运行rest 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.RES
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
是此post调用所需的唯一参数
谢谢。具体来说,
因为我们从未在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
)
当我添加“requestContentType:JSON”时,它返回了“错误的请求”
它被更改为“requestContentType:URLENC”,对我有效
读给我解释一下
请注意,上面的示例将请求数据发布为
application/x-www-form-urlencoded。(twitter API不支持
XML或JSON POST请求。)因此
必须指定参数,以标识请求主体如何
应该序列化
因为我们从未在RESTClient实例上设置默认内容类型
或者在此请求中传递contentType参数,RESTClient将
Accept::在请求头中,根据
响应内容类型标题中给出的内容。因为
Twitter正确地将其响应标识为application/json,它将
由默认JSON解析器自动解析
你试过添加一个
Accept
标题吗?我是在做了一些研究之后发布的;因为我无法将内容类型指定为“JSON”,即所有大写。我的问题通过将“requestContentType:JSON”更改为“requestContentType:application/JSON”得到解决。它不是字符串JSON
指的是groovyx.net.http.ContentType.JSON
。请参考@aamir