我通过使用 jerseyclient 发出发帖请求时遇到错误。谁能看看下面的错误?非常感谢您的反馈。
这是我作为 pom.xml
中的依赖项包括的内容<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.19</version>
</dependency>
错误如下:
com.sun.jersey.api.client.ClientHandlerException:com.sun.jersey.api.client.ClientHandlerException:Java类型,类java.lang.String和MIME媒体类型application / json的消息正文编写器, 没找到 web_1 |在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149) web_1 |在com.sun.jersey.api.client.Client.handle(Client.java:648) web_1 |在com.sun.jersey.api.client.WebResource.handle(WebResource.java:670) web_1 |在com.sun.jersey.api.client.WebResource.access $ 200(WebResource.java:74) web_1 |在com.sun.jersey.api.client.WebResource $ Builder.post(WebResource.java:563) web_1 |在 。 。 。 。handler.request.WrapperHandler.startWrapper(WrapperHandler.java:65) web_1 |在 。 。 。 。handler.request.WrapperTask.call(WrapperTask.java:35) web_1 |在 。 。 。 。handler.request.WrapperTask.call(WrapperTask.java:8) web_1 |在java.util.concurrent.FutureTask.run(FutureTask.java:262) web_1 |在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) web_1 |在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:622) web_1 |在java.lang.Thread.run(Thread.java:748) web_1 |引起原因:com.sun.jersey.api.client.ClientHandlerException:找不到Java类型类java.lang.String和MIME媒体类型application / json的消息正文编写器 web_1 |在com.sun.jersey.api.client.RequestWriter.writeRequestEntity(RequestWriter.java:288) web_1 |在com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:204) web_1 |在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
这是发出发布请求的代码。
ClientConfig cc = new DefaultClientConfig();
Client client = Client.create(cc);
WebResource webResource = client.resource(URL.replaceAll(" ", "%20"));
ClientResponse response = webResource
.accept("application/json")
.type("application/json")
.post( ClientResponse.class, parameters.toString() );
String serverOutput = response.getEntity(String.class);
System.out.println("server output=" + serverOutput);
答案 0 :(得分:0)
您需要将json解析器添加到默认客户端
apiClient是了解json对象的代码。
JacksonJsonProvider jsonProvider =新的JacksonJsonProvider(apiClient.getObjectMapper()); DefaultClientConfig defaultClientConfig =新的DefaultClientConfig(); defaultClientConfig.getSingletons()。add(jsonProvider);