Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GROOVY RESTClient:未找到请求内容类型的编码器*/*_Java_Api_Rest_Groovy - Fatal编程技术网

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

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

我正在运行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.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