【发布时间】:2015-05-11 04:18:30
【问题描述】:
我正在使用 arquillian 为部署在 Tomcat 8 上的 JAX-RS/Jersey Webservice 创建集成测试。
我正在尝试执行这样的 POST 请求:
E dummy = dummyFactory.manufacturePojo(getSubClassType());
dummy.setId(null);
Client client = ClientBuilder.newClient();
WebTarget target = client.target(BASE_URI).path("bandeira");
Response response = target.request(MediaType.APPLICATION_JSON)
.header(HttpHeaders.AUTHORIZATION, CHAVE_TESTE)
.header(HttpHeaders.CONTENT_TYPE, "application/json")
.post(Entity.entity(dummy, MediaType.APPLICATION_JSON));
当我这样做时,我得到了这个异常:
Caused by: java.lang.IllegalStateException: Already connected
at sun.net.www.protocol.http.HttpURLConnection.setRequestProperty(HttpURLConnection.java:3000)
at org.glassfish.jersey.client.HttpUrlConnector.setOutboundHeaders(HttpUrlConnector.java:364)
at org.glassfish.jersey.client.HttpUrlConnector.access$100(HttpUrlConnector.java:91)
at org.glassfish.jersey.client.HttpUrlConnector$4.getOutputStream(HttpUrlConnector.java:327)
at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:201)
at org.glassfish.jersey.message.internal.CommittingOutputStream.commitStream(CommittingOutputStream.java:195)
at org.glassfish.jersey.message.internal.CommittingOutputStream.commit(CommittingOutputStream.java:263)
at org.glassfish.jersey.message.internal.OutboundMessageContext.commitStream(OutboundMessageContext.java:816)
at org.glassfish.jersey.client.ClientRequest.writeEntity(ClientRequest.java:546)
at org.glassfish.jersey.client.HttpUrlConnector._apply(HttpUrlConnector.java:331)
at org.glassfish.jersey.client.HttpUrlConnector.apply(HttpUrlConnector.java:243)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:246)
... 149 more
我可以使用一些启发式方法,因为 我仍在学习 arquillian 和 Jersey 客户端 API :) 谢谢
【问题讨论】:
-
我不认识 arquillian,但我觉得这件球衣客户的作品还不错。您可以调试并查看您的标头是否正确编写?您可以从响应中看到它。
标签: java jersey client jboss-arquillian