java executemethod
通过httpclient向服务器发送https请求,可是连接报错。
// 构造HttpClient的实例
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod(ssoInterfactUrl);
// 设置连接超时和读取超时
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(30000);
httpClient.getHttpConnectionManager().getParams().setSoTimeout(30000);
try {
WmsvrUtils.log("start");
int statusCode = httpClient.executeMethod(getMethod);
WmsvrUtils.log("statusCode" + statusCode);
if (statusCode != HttpStatus.SC_OK) {
WmsvrUtils.log("Method failed:" + getMethod.getStatusLine());
}
byte[] responseBody = getMethod.getResponseBody();
ssoVerifyString = new String(responseBody);
} catch (HttpException e) {
WmsvrUtils.log("[zjgfsso] Please check your provided http address!", e);
} catch (IOException e) {
WmsvrUtils.log("[zjgfsso] network error", e);
} finally {
// 释放连接
getMethod.releaseConnection();
}
按@红薯 的建议增加了超时,报错如下:
18:31:21 INFO [tid:16] [zjgfsso] network error
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at com.sun.net.ssl.inteal.ssl.InputRecord.readFully(Unknown Source)
at com.sun.net.ssl.inteal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.inteal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.inteal.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
at com.sun.net.ssl.inteal.ssl.AppInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at org.apache.jsp.cmcu_005faddon.zjgfLogin_jsp._jspService(zjgfLogin_jsp.java:184)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.intealDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.tebie.cmapp.ajxvr.JSPFilter.doFilter(SourceFile:102)
at org.apache.catalina.core.ApplicationFilterChain.intealDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:856)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
at java.lang.Thread.run(Unknown Source)
服务器端到底在干什么……
好伤心啊,我们是客户端,通过webservice传递请求,可是试了两种完全不同的实现,都是read time out。问他们服务器的负责人,他们说服务器没有日志…… webservice地址是https的,证书我已经加了。通过浏览器可以打开https连接,telnet 80 和 443端口都是通的。
对网络不了解了……
作者:各自安好吧
来源链接:https://blog.csdn.net/weixin_34254083/article/details/114846039
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。