HTTP 400错误请求:javax.ws.rs.BadRequestException

HTTP 400错误请求:javax.ws.rs.BadRequestException,java,web-services,jax-rs,webclient,restful-url,Java,Web Services,Jax Rs,Webclient,Restful Url,我创建了一个RESTful web服务,并编写了一个客户端来使用它。但当我运行它时,我接受HTTP 400错误请求:javax.ws.rs.BadRequestException。这是我的客户代码: String webserviceURI = "http://localhost:8084/fsc-access"; ClientConfig clientConfig = new ClientConfig(); Client client = ClientBuilder.newClien

我创建了一个RESTful web服务,并编写了一个客户端来使用它。但当我运行它时,我接受HTTP 400错误请求:javax.ws.rs.BadRequestException。这是我的客户代码:

    String webserviceURI = "http://localhost:8084/fsc-access";

ClientConfig clientConfig = new ClientConfig();
Client client = ClientBuilder.newClient(clientConfig);
URI serviceURI = UriBuilder.fromUri(webserviceURI).build();
WebTarget webTarget = client.target(serviceURI);
MultivaluedMap formData = new MultivaluedMapImpl();
formData.add("plate", plate);
formData.add("startTime", start.toString());
formData.add("endTime", end.toString());
Weightings weightings = new Weightings();
 weightings.getWeightings().addAll((Collection<? extends Weighting>) webTarget.path("rest").path("report").path("loadWeightingByPlate").
        request().accept(MediaType.APPLICATION_XML).post(javax.ws.rs.client.Entity.form(formData), Weightings.class));
有人能帮我使用这个web服务吗

有一些警告:

2015年8月21日23:18:11.797警告[http-nio-8084-exec-123]org.glassfish.jersey.servlet.WebComponent.filterPerformParameters对URI的servlet请求在请求正文中包含表单参数,但请求正文已被访问请求参数的servlet或servlet筛选器使用。只有使用@FormParam的资源方法才能按预期工作。通过其他方式使用请求正文的资源方法将无法按预期工作

还有som exeprions:

线程“C3P0PooledConnectionPoolManager[identityToken->1hge1379bmmvkmpse6n4w | 7936e088]-AdminTaskTimer“java.lang.IllegalStateException:无法用java.lang覆盖原因。IllegalStateException:非法访问:此web应用程序实例已停止。无法加载com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask。最终的后续堆栈跟踪是由出于调试目的以及试图终止导致非法访问的线程而引发的错误引起的,没有任何功能影响。 位于java.lang.Throwable.initCause(Throwable.java:457) 位于org.apache.catalina.loader.WebappClassLoader.checkStateForClassLoading(WebappClassLoader.java:1335) 位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1216) 位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177) 位于com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:1040) 位于com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1507) 位于com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1477) 位于com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1565) 访问com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:44) 位于com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:2089) 位于java.util.TimerThread.mainLoop(Timer.java:555) 在java.util.TimerThread.run(Timer.java:505) 原因:java.lang.ClassNotFoundException 位于org.apache.catalina.loader.WebappClassLoader.checkStateForClassLoading(WebappClassLoader.java:1334) ... 10多 线程“C3P0PooledConnectionPoolManager[identityToken->1hge1379bmmw228sz1sso | 53826b99]-AdminTaskTimer“java.lang.IllegalStateException:无法用java.lang覆盖原因。IllegalStateException:非法访问:此web应用程序实例已停止。无法加载com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask。最终的后续堆栈跟踪是由出于调试目的以及试图终止导致非法访问的线程而引发的错误引起的,没有任何功能影响。 位于java.lang.Throwable.initCause(Throwable.java:457) 位于org.apache.catalina.loader.WebappClassLoader.checkStateForClassLoading(WebappClassLoader.java:1335) 位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1216) 位于org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177) 位于com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:1040) 位于com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1507) 位于com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1477) 位于com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1565) 访问com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:44) 位于com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:2089) 位于java.util.TimerThread.mainLoop(Timer.java:555) 在java.util.TimerThread.run(Timer.java:505) 原因:java.lang.ClassNotFoundException 位于org.apache.catalina.loader.WebappClassLoader.checkStateForClassLoading(WebappClassLoader.java:1334) ... 10多

日志过滤器:

22-Aug-2015 00:32:32.969 INFO [http-nio-8084-exec-37] org.glassfish.jersey.filter.LoggingFilter.log 1 * Sending client request on thread http-nio-8084-exec-37
1 > POST http://localhost:8084/fsc-access/rest/report/loadWeightingByPlate
1 > Accept: application/xml
1 > Content-Type: application/x-www-form-urlencoded

22-Aug-2015 00:32:33.015 INFO [http-nio-8084-exec-37] org.glassfish.jersey.filter.LoggingFilter.log 2 * Client response received on thread http-nio-8084-exec-37    
2 < 200
    2 < Content-Length: 1026
    2 < Content-Type: application/xml
    2 < Date: Fri, 21 Aug 2015 19:54:48 GMT
    2 < Server: Apache-Coyote/1.1
22-Aug-2015 00:32:32.969信息[http-nio-8084-exec-37]org.glassfish.jersey.filter.LoggingFilter.log 1*在线程http-nio-8084-exec-37上发送客户端请求
1>职位http://localhost:8084/fsc-访问/休息/报告/装载重量铭牌
1>接受:应用程序/xml
1>内容类型:应用程序/x-www-form-urlencoded
2015年8月22日00:32:33.015信息[http-nio-8084-exec-37]org.glassfish.jersey.filter.LoggingFilter.log 2*在线程http-nio-8084-exec-37上收到客户端响应
2 < 200
2<内容长度:1026
2<内容类型:应用程序/xml
日期:2015年8月21日星期五19:54:48 GMT
2<服务器:Apache Coyote/1.1

您的资源正在返回一个
权重的实例,因此您只需对其进行强制转换,无需执行
addAll()


它不会修复您的400异常,但是如果没有它,您将得到ClassCastException。

日志中是否有堆栈跟踪?通常,“400错误请求”表示找到了资源(否则将是404),但无法填充资源的参数。我指的是服务器日志,而不是客户端日志,我添加了一个警告。这和我在前面的问题中添加的是一样的。我给出了一些系统输出,我发现我的加载函数工作正常,并向webservice返回了一个列表。但是这个列表不会返回到我的客户机。您介意更改您的客户机,并添加
client.addFilter(newloggingfilter(System.out))
Client-Client=ClientBuilder.newClient(clientConfig)行之后。再次尝试运行它,它应该
22-Aug-2015 00:32:32.969 INFO [http-nio-8084-exec-37] org.glassfish.jersey.filter.LoggingFilter.log 1 * Sending client request on thread http-nio-8084-exec-37
1 > POST http://localhost:8084/fsc-access/rest/report/loadWeightingByPlate
1 > Accept: application/xml
1 > Content-Type: application/x-www-form-urlencoded

22-Aug-2015 00:32:33.015 INFO [http-nio-8084-exec-37] org.glassfish.jersey.filter.LoggingFilter.log 2 * Client response received on thread http-nio-8084-exec-37    
2 < 200
    2 < Content-Length: 1026
    2 < Content-Type: application/xml
    2 < Date: Fri, 21 Aug 2015 19:54:48 GMT
    2 < Server: Apache-Coyote/1.1
Weightings weightings = new Weightings();
 weightings.getWeightings().addAll((Collection<? extends Weighting>) webTarget.path("rest").path("report").path("loadWeightingByPlate").
        request().accept(MediaType.APPLICATION_XML).post(javax.ws.rs.client.Entity.form(formData), Weightings.class));
Weightings weightings = (Weightings) webTarget.path("rest").path("report").path("loadWeightingByPlate").
    request().accept(MediaType.APPLICATION_XML).post(javax.ws.rs.client.Entity.form(formData), Weightings.class));