【发布时间】:2014-04-18 17:16:17
【问题描述】:
您好,我在 weblogic 服务中部署了 Spring Rest Webservice。我有谷歌浏览器的高级休息客户端,可以在 https 上完美运行 我正在尝试通过 https 客户端创建客户端。我有 ca 证书和客户端证书。我从下面的链接创建它 Accessing secure restful web services using jersey client 但我在下面遇到异常
Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection timed out: connect
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155)
at com.sun.jersey.api.client.Client.handle(Client.java:652)
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.post(WebResource.java:570)
at org.app.last.JerseyClient.get_JSON(JerseyClient.java:39)
at org.app.last.JerseyClient.main(JerseyClient.java:239)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:564)
at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:395)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:272)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:329)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:318)
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:253)
at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:153)
... 6 more
【问题讨论】:
-
似乎您使用的任何端点都无效或没有响应。
-
我可以在 chrome rest 客户端中使用这些端点来完美地工作。
-
很可能你真的有一个超时。这可能是由于网络问题(网络速度慢、服务器无响应等)而发生的
GET,或者像curl这样的工具,如果是POST或PUT) -
我正在向服务器发送应用程序/json 空白发布请求。方法是 public
T get_JSON(Class responseType,String input) throws UniformInterfaceException { return webResource.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON).post(responseType,input);并且端点与chrome浏览器中的高级休息客户端完美配合 -
@ramesh027 也许您在 Java 中的实现最终会得到一个无效的 URL。 API 可能会在您指定的任何 URL 之后附加一些内容。
标签: java spring web-services rest jersey-client