java请求https,在本地可以,在服务器端请求失败

java请求https,在本地可以,在服务器端请求失败,是服务器端失败哦!
自己的前提是请求的url是正确的。
附上https请求代码,请大神一看:

 public static JSONObject httpRequest(String requestUrl, String requestMethod, String outputStr) {
        JSONObject jsonObject = null;
        StringBuffer buffer = new StringBuffer();
        try {
            // 创建SSLContext对象,并使用我们指定的信任管理器初始化
            TrustManager[] tm = { new MyX509TrustManager() };
            SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
            sslContext.init(null, tm, new java.security.SecureRandom());
            // 从上述SSLContext对象中得到SSLSocketFactory对象
            SSLSocketFactory ssf = sslContext.getSocketFactory();

            URL url = new URL(requestUrl);
            HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
            httpUrlConn.setSSLSocketFactory(ssf);

            httpUrlConn.setDoOutput(true);
            httpUrlConn.setDoInput(true);
            httpUrlConn.setUseCaches(false);
            // 设置请求方式(GET/POST)
            httpUrlConn.setRequestMethod(requestMethod);

            if ("GET".equalsIgnoreCase(requestMethod))
                httpUrlConn.connect();

            // 当有数据需要提交时
            if (null != outputStr) {
                OutputStream outputStream = httpUrlConn.getOutputStream();
                // 注意编码格式,防止中文乱码
                outputStream.write(outputStr.getBytes("UTF-8"));
                outputStream.close();
            }

            // 将返回的输入流转换成字符串
            InputStream inputStream = httpUrlConn.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            String str = null;
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            bufferedReader.close();
            inputStreamReader.close();

            inputStream.close();
            inputStream = null;
            httpUrlConn.disconnect();
            jsonObject = JSONObject.fromObject(buffer.toString());
        } catch (ConnectException ce) {
            log.error("Weixin server connection timed out.");
        } catch (Exception e) {
            log.error("https request error:{}", e);
        }
        return jsonObject;
    }
0

8个回答

在服务器上ping一下目的主机看目的主机是否可达
若目的主机可达再用nc命令测一下目的端口(https)是否可达
nc -v hostname https

0

忘了结贴:其实发送不出去是因为自己的服务器配置没有配好,端口443和80没有开启,导致数据传输不出去.....

2
Mia_Zhu
pengyaner 回复成名驴01: 这个不是很清楚啊...
一年多之前 回复
chengminglv
成名驴01 报错是连接超时,错误信息最后一条评论里,就是不知道,服务器该怎么配置。
一年多之前 回复
Mia_Zhu
pengyaner 能ping通说明你的端口开着的,看看你的代码在服务器端的报错
一年多之前 回复
chengminglv
成名驴01 回复Mia_Zhu: 感谢回复! 目的ip 是能ping通的,就是不会 开443端口,百度的方法不太合适。
一年多之前 回复
Mia_Zhu
pengyaner 回复成名驴01: 其实是这样的,你项目跑在服务器端,你的服务器有一个配置,应该是对端口的一个控制,有的服务器很多端口都是关着的,所以你要在服务器上ping一下你需要连接的域名或者ip,看看是否能ping通,ping不通说明https用的端口443没有开,所以要在服务器端开了443这个端口
一年多之前 回复
chengminglv
成名驴01 能否详细说下,本人新手也遇到这个问题了,感觉咱俩问题一样。
一年多之前 回复

虽然没太明白什么意思,但应该是跨域的问题,使用jsonp应该会好

0
Mia_Zhu
pengyaner 额,不是的,用这个方法是请求一个https的连接,在本地可以,项目放在服务器上面就time out
大约 2 年之前 回复

请求https,服务器应该需要证书吧

0

请了解一下https协议,它和http差别很大的:http://blog.csdn.net/lxqluo/article/details/6960306

0
0

将HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
改成URLConnection httpUrlConn = url.openConnection();

0

报错,连接超时:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550)
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:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:271)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:328)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:896)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:230)
at com.synch.SSOEmailService.sendPostHttps(SSOEmailService.java:91)
at com.synch.SSOEmailService.main(SSOEmailService.java:29)
************result:


0
baidu_41720739
baidu_41720739 请问这个连接超时的问题如何解决的呢
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java中https请求失败的解决办法
https://blog.csdn.net/guozili1/article/details/53995121
HttpClient发送https请求,信任所有证书
客户端向服务器发送https请求时,会验证服务端的证书状态,可以设置信任所有证书,绕过这一步。 查看HttpClient官方文档,示例如下: 使用SSLContextBuilder来创建SSLContext实例,该类的方法如下: //参数为信任的证书,信任策略 public SSLContextBuilder loadTrustMaterial(KeyStore truststo...
Java https服务器证书认证问题解决方案
Java https连接的”unable to find valid certification path to requested target”,”PKIX path building failed”错误原因这个问题的是由于Java自带的根证书库中不包含HTTPS服务器上的根证书,因此无法得到认证。解决方案比较容易实现的方案有两种: 导入服务器证书到本地Java环境 代码中忽略证书信任问题 由于
本地异步通知发送 正常,但是部署服务到服务器上,发送http请求,返回就是验证失败...
后来将发送的 参数 和地址 拼接成 url .自己在服务器上的IE浏览器去打开这个地址,发现返回确实是失败,但是本地生产的地址和这个一样在火狐 谷歌上都是正常返回时success. 本地的ie浏览器上也一样是失败. 地址一样只不过是参数有中文,这样我觉得可能是编码问题... 后来将httpUtil 工具 中PrintWriter out = new PrintWriter(httpConn....
本地异步通知发送 正常,但是部署服务到服务器上,发送http请求,返回就是验证失败
后来将发送的 参数 和地址 拼接成 url .自己在服务器上的IE浏览器去打开这个地址,发现返回确实是失败,但是本地生产的地址和这个一样在火狐 谷歌上都是正常返回时success. 本地的ie浏览器上也一样是失败. 地址一样只不过是参数有中文,这样我觉得可能是编码问题... 后来将httpUtil 工具 中PrintWriter out = new PrintWriter(httpConn.
客户端以https访问服务器的流程
添加网络权限,依赖okhttp开源框架      第一种方式:信任所有https主机的访问          1.OkHttpClient初始化时,配置创建一个证书对象,校验名称,信任所有的主机,也就是信任所有https的请求          对应所要创建的类,是固定模式,直接拷贝使用即可          2.okhttp的正常使用     第二种方式:信任当前证书的http
Chrome 浏览器不支持本地 AJAX 请求问题
当我们学习AJAX,写一些简单的demo ,在浏览器演示时,可能会遇到这样的问题错误提示中表示:跨域请求只支持协议:http,data,Chrome,chrome-extenson,https.部分浏览器(Firefox),支持file下的ajax请求,解决方法:鼠标右键点击Chrome快捷方式--点击最下面的属性--选择快捷方式--在“目标”路径最后面加上” --allow-file-acces...
java https通讯,服务器代码与客户端代码,单向验证,ssl
服务端:package client.cfca; import java.io.DataInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.ObjectOutputStream; import ja...
[web安全] 服务器端请求伪造(SSRF)
SSRF(Server-Side Request Forgery:服务器端请求伪造)是一种由攻击者构造形成由服务器端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)。 SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定UR
SSRF(服务端请求伪造)
简介 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统) SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。比如从指定...
服务器端设置跨域请求
web.xml<filter> <filter-name>CrossOrigin</filter-name> <filter-class>com.xx.filter.CrossOriginFilter</filter-class> <init-param> <param-name>AccessControlAllowOrigin</param-name> <param-v
post请求服务器端无法获取的解答
$_POST 只能接收 Content-Type 为 application/x-www-form-urlencoded 和 multipart/form-data 的 POST 数据。如果你要用 $_POST 的话,你就改一下这里:header: { 'Content-Type': 'application/json' }把上面的 applicat...
本地可以服务器上不行的问题之https加载cdn资源
在处理一个页面 点击显示地图时 地图层遮盖底下显示不出来。研究了很久的z-index属性。在手机页面上调试。经大神指点,用浏览器打开看了下 发现是https下加载的一个cdn引用资源异常。导致有元素undefined。百度到解决办法: head中加 对谷歌高一点版本有效。测试过微信浏览器里能生效。但这样本地运行时加载不到资源。分析: 其实这种本地是好的 服务器上不行的现象遇到过很多次。 百
postman请求https网址没有响应,但是用浏览器有响应,解决办法
遇到个问题:同一个get请求的url,postman请求https网址没有响应,但是用浏览器有响应 url是https开头的,查看错误描述里有一个SSL的选项: 然后根据描述关掉这个选项: 然后就没问题了,能正常请求及响应  ...
【网络】JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求
JAVA Socket 实现HTTP与HTTPS客户端发送POST与GET方式请求   哇,一看标题怎么这么长啊,其实意思很简单,哥讨厌用HTTP Client做POST与GET提交 觉得那个毕竟是别人写得API库,所以我就自己实现了一个简单的HTTP客户端,支持POST 方式提交数据,GET方式查询数据,是测试Restful API比较方便点,然后支持form与JSON两 种方式提
java httpSever 实现请求监听与响应
本文原文为:http://blog.csdn.net/earbao/article/details/41211041 内容如下: JDK6 提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现
Https之postman请求失败?
卤煮今天用postman访问https的时候遇到这个 后来查了一下,果然,postman有暗门! 关掉该选项,就可以了!  
HTTPClient请求错误
我有两个应用,一个应用通过HTTPClient请求另一个系统。在本地是好的。但是放到linux服务器下不行,url地址是没有错的,但是用get提交,返回码200,但得到的是一串html代码。用post提交,返回码是301。在地址栏上请求返回是正确的。后来一分析,终于找到了原因,犯了一个低级的错误。 首先:我.10.10.10.1服务器上安装的是nginx,10.10.10.2服务器上安装的是两个
Java https服务器认证问题的解决方法
Java https服务器认证问题的解决方法 java访问https出现如下错误: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed 原因 由于Java自带根证书库中不包含此HTTPS服务器上的根证书,导致认证失败。 解
如何在java中发起http和https请求 配置信任
记录下项目中遇到的问题转自:http://blog.csdn.net/guozili1/article/details/53995121一般调用外部接口会需要用到http和https请求。一.发起http请求1.写http请求方法[java] view plain copy//处理http请求  requestUrl为请求地址  requestMethod请求方式,值为&quot;GET&quot;或&quot;POST&quot;  ...
(问题)ajax请求本地正常,服务器上显示404
(场景)最近的一个项目上线之后,突然报出一个请求404的错误,如果直接在浏览器上输入请求地址的话,请求是成功的,在本地的测试下却是正常的。 解决方案: 1、可能是跨域所产生的问题,可采用以下模板进行请求 $.ajax({ type : &quot;get&quot;, async:false, url : &quot;&quot;, dataType : &quot;jsonp&quot;, ...
java调用https接口报错
调用第三方https接口,在本地测试没问题,将项目提交到测试环境怎么都掉不通,报如下错误:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder
java环境配置https访问(本地测试)
1、进入到jdk下的bin目录:cd %JAVA_HOME%/bin  2:再运行:keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\test\tomcat.keystore -validity 36500 (D盘要先建好test文件夹,否则会报不存在。参数简要说明:“D:\home\tomcat.keystore”含义是将证
javaweb未全站https化,因tomcat版本导致站内http请求出错解决
最近在做调测时,由于javaweb网站没有做全站的https化,只将登录鉴权等关键页面做成https请求的,登录成功后在返回页面内的跳转是http处理的。在同事中,使用tomcat  6.0系列是正常的,但是用tomcat 8.0系列在点击页面内的http跳转时,出现错误如下: Invalid character found in the request target. The valid ch
Java调用本地接口常见错误
今天调用本地方法时遇到的问题: 1. java.lang.UnsatisfiedLinkError: no XXXX in java.library.path 2. Exception in thread "main" java.lang.UnsatisfiedLinkError: xxx.xxx.sqlAuth([I]) 网上查了很多 错误1,主要是没有办法path路径中加载。
Https请求验证证书失败解决方法!(信任所有证书)
报错:unable to find valid certification path to requested target 解决办法: 1、导入证书到本地证书库 2、信任所有SSL证书 最好的解决办法或许是信任所有SSL证书,因为某些时候不能每次都手动的导入证书非常麻烦。现在封装了个方法,在连接openConnection的时候忽略掉证书就行了。 SslUtils.java imp...
HTTPS请求(三)
本文分为以下五节: 中间人攻击:介绍中间人攻击常见方法,并模拟了一个简单的中间人攻击;校验证书的正确姿势:介绍校验证书的一些误区,并讨论了正确校验方式;ATS:讨论下 iOS 9.0 新发布的的特性App Transport Security;调试SSL/TLS:讨论使用Wireshark进行SSL/TLS调试的方法;后记 其中第1节“中间人”是比较常见基础的知识,网上也可以找
java中使用https向远程服务器发送POST请求
上篇文章讲述了使用HTTP的方式向远程服务器发送POST请求,而通常在实际工作中我们都会需要请求HTTPS开头的URL,而如果需要使用HTTP发送请求并且能够同样请求HTTPS的地址,需要我们编写一个SSL客户端绕过SSL证书检测 //SSLClient代码 package com.itsm.sync.service; import org.apache.http.conn.ClientCon...
[Java通信]Java通过HTTP请求发送HTTP服务器
Java通过HTTP请求发送HTTP服务器
Java 请求https接口不需要安装证书
Java 请求https接口不需要安装证书,获取到信任的cilent
https与SSL协议详解及Java实现免证书访问https服务代码
https与SSL协议详解及Java实现免证书访问https服务代码 tomcat提供https服务接口方法
Https请求验证工具类
Https请求验证工具类,解决javax.net.ssl.SSLHandshakeException验证失败的错误
微软HotFix+KB968730+补丁
windows2003 https请求失败补丁,微软HotFix+KB968730+补丁
postman 请求https网址无响应,浏览器却有,解决办法
遇到个问题:同一个get请求的url,使用postman请求https网址没有响应,但是用浏览器有响应 url是https开头的,查看错误描述里有一个SSL的选项:   只需按照指令关闭该选项即可: 再次尝试即可 ...
java 网络请求 支持https 记录cookie并带入请求
之前遇到这样的需求,弄了半天才成功,记录一下 定义变量 public static String cookieVal=&quot;&quot;;  public static String firstCookie=&quot;&quot;;  public static String allcookie=&quot;&quot;; 然后是请求方法,我只弄了get请求 public static String Get(String url_ge...
Java发https请求证书问题
URL url = new URL( "https://localhost:8443"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod( "POST"); connection.setDoOutput(true); connection.setDoInput(true); System.out.println( "1--Conected to "+ connection.toString());
IOS UIWebView请求https站点及html页面内部ajax请求 对https的支持
直接在AppDelegate.m文件内部添加如下代码即可(亲测可行) @implementation NSURLRequest(ViewController) + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host {     return YES; } @end 转自:
SSRF(服务端请求伪造)漏洞
目录 SSRF SSRF漏洞的挖掘 SSRF漏洞利用 SSRF漏洞防御 SSRF SSRF(Server-Side Request Forgery,服务器端请求伪造)漏洞,是一种由攻击者构造请求,由服务器端发起请求的安全漏洞,本质上是属于信息泄露漏洞。 SSRF漏洞原理:很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取...
java请求https接口证书验证问题
1,通过重新定义X509TrustManager证书管理器可以解决相关问题。 @Test public void testToken() throws KeyManagementException, NoSuchAlgorithmException{ String body = &quot;&quot;; //采用绕过验证的方式处理https请求 SSLContext ssl...
http远程请求失败,绕过安全协议进行请求
最近有个项目是接入远程接口获取数据进行处理,结果使用javahttp一直失败,经查是安全协议证书的问题,试过了多种方法仍然失败,最后直接绕过安全协议,完美解决问题。 /** * @param url 需要请求的网关路径 * @param sendData 请求时需要传入的参数 * @param urlencode url的编码格式 * @param...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java易班请求授权 web请求教程