Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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
Netbeans';RESTful Java客户端:javax.ws.rs.NotAcceptableException:HTTP 406不可接受_Java_Web Services_Rest_Post_Netbeans - Fatal编程技术网

Netbeans';RESTful Java客户端:javax.ws.rs.NotAcceptableException:HTTP 406不可接受

Netbeans';RESTful Java客户端:javax.ws.rs.NotAcceptableException:HTTP 406不可接受,java,web-services,rest,post,netbeans,Java,Web Services,Rest,Post,Netbeans,我正在使用Netbeans的restfulweb服务开发一个web服务。服务类包含以下方法: @Path("jpost") @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.TEXT_PLAIN) public String jpost(Car c){ return "Car:"+c.getTag()+"\t"+c.getName()+"\t"+c.getColor(); } 为了测试这个方法,我使用Netb

我正在使用Netbeans的restfulweb服务开发一个web服务。服务类包含以下方法:

@Path("jpost")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public String jpost(Car c){
    return "Car:"+c.getTag()+"\t"+c.getName()+"\t"+c.getColor();
}
为了测试这个方法,我使用Netbeans的restfuljava客户机来生成测试方法。结果是:

public String jpost(Object requestEntity) throws ClientErrorException {
        return webTarget.path("jpost").request(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), String.class);
    }
当我调用
jpost
时,出现以下错误:

Exception in thread "main" javax.ws.rs.NotAcceptableException: HTTP 406 Not Acceptable
    at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:923)
    at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:770)
    at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:90)
    at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:671)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:422)
    at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:667)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:423)
    at org.glassfish.jersey.client.JerseyInvocation$Builder.post(JerseyInvocation.java:326)
    at myserver.test5.jpost(test5.java:36)
    at myserver.MyServerTest.main(MyServerTest.java:32)

问题出在哪里?

您的服务只会产生
文本/纯文本
响应

HTTP代码406表示服务器无法提供客户端可接受的内容类型。因此,客户端要么在
Accepts
标题中指定了错误的内容类型,要么根本没有发送
Accepts

要指定接受的类型,请使用
request(…)
参数

public String jpost(Object requestEntity) throws ClientErrorException 
{
    return webTarget.path("jpost")
            .request(javax.ws.rs.core.MediaType.TEXT_PLAIN)
            .post(javax.ws.rs.client.Entity.entity(requestEntity, javax.ws.rs.core.MediaType.APPLICATION_JSON), String.class);
}

客户端未指定正确的内容类型。这里唯一正确的内容类型是text/plain您能在答案中指定所需的更改吗?我不熟悉Netbenas生成的RESTful客户端代码。谢谢。为什么Netbeans在我明确设置了输出格式的情况下错误地生成了这个结果。我做错什么了吗?