java 访问https的远程json数据
本人要从国外一网站上获取相关的数据信息,并找到了该信息的json数据的地址,是https的。由于js不能跨域获取,所以写了一个java来读取该页面内容,在本地实施没有问题,IE等浏览器均能直接打开并显示此地址中的json数据字符串。
问题来了,等部署到服务器上的时候却连接超时,无法获取,在服务中通过IE访问该地址后,弹出下载提示,要求下载。
这个json的数据地址发给了几个同事,有的可以打开,有的也是提示下载,其中包括已经安装jdk和没有安装jdk的机器,都出现了提示下载和直接打开的问题,所以怀疑是服务器某个设置有问题导致,请各位大侠帮帮忙。
很急的问题,在线等。谢谢啦!!!!! --------------------编程问答-------------------- 补充一下,服务器是 windows2008 server R2 --------------------编程问答-------------------- 错误信息如下:
exception
org.apache.jasper.JasperException: java.net.ConnectException: Connection timed out: connect
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.net.ConnectException: Connection timed out: connect
java.net.PlainSocketImpl.socketConnect(Native Method)
java.net.PlainSocketImpl.doConnect(Unknown Source)
java.net.PlainSocketImpl.connectToAddress(Unknown Source)
java.net.PlainSocketImpl.connect(Unknown Source)
java.net.SocksSocketImpl.connect(Unknown Source)
java.net.Socket.connect(Unknown Source)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(Unknown Source)
com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source)
org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:82)
org.apache.commons.httpclient.protocol.SSLProtocolSocketFactory.createSocket(SSLProtocolSocketFactory.java:127)
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
com.rft.util.GetHtml.getHtmlToStr(GetHtml.java:46)
org.apache.jsp.getICEJson_jsp._jspService(getICEJson_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
--------------------编程问答-------------------- 你想一下本地实施是怎么实施的 我想问一下 你在本地是怎么访问这个https的呢 部署到服务器上就是把项目发布上去了 我觉得会不会是服务器的那边网络原因导致 查一下网络有没有限制什么的 我觉得你因该好好分析一下这2个原因 因为我没有做过你这个项目 也不好随便说 值能给你一个参考吧 --------------------编程问答-------------------- --------------------编程问答-------------------- ++浏览器直接打开json数据或者下载json数据是和浏览器对json的支持来决定的吧,一般谷歌浏览器直接打开,IE默认好像是下载的。要是想所有都下载,那你把json当成附件写出去吧。 --------------------编程问答-------------------- 浏览器 不同而定的。。。但最主要的是你的Socket 阻塞了,会出现超时问题,客户端获取的时候由于发送包发出去后,流阻塞了,没有读取到数据,所以超时了。。当然你也得不到数据,也就是说,数据根本就没有获取到客户端,抓包可以看到。。
补充:Java , Web 开发