首页 新闻 会员 周边 捐助

java发送https请求 请求的状态是200 但是报javax.net.ssl.SSLException: SSL peer shut down incorrectly

0
悬赏园豆:100 [已解决问题] 解决于 2022-08-24 22:26

代码如下:
JSONObject json = new JSONObject();
@SuppressWarnings("deprecation")
CloseableHttpClient client = new DefaultHttpClient();
CloseableHttpResponse response = null;
HttpPost post = new HttpPost(url);

        post.setHeader("Content-Type", "application/raw");
        post.setHeader("Accept", "*/*");
        System.out.println(post.getProtocolVersion());
        
        
        Gson gson = new GsonBuilder().disableHtmlEscaping().create();
        Map<String,String> a=new HashMap<String, String>();
        a.put("token", "cIZ9ExmrOAR0WieMjIEAvv4U3DY8iJ+Kg+BSDcytauw=");
        a.put("limit", "0");
        post.setEntity(new StringEntity(gson.toJson(a), "utf-8"));
        response = client.execute(post);
        // 获取响应消息实体
        HttpEntity entity = response.getEntity();
        // 响应状态
        logger.info("从主平台获取请求响应状态:"+response.getStatusLine());
        logger.info("从主平台获取请求响应体:"+response.getEntity());

返回的response 的状态是200 但是 报 (https://img2018.cnblogs.com/blog/1198591/201911/1198591-20191129143333591-799511009.png)

有没有哪位大神遇到过

^keepHungry$的主页 ^keepHungry$ | 小虾三级 | 园豆:516
提问于:2019-11-29 14:35

response.getEntity().content().length得到的 是-1

^keepHungry$ 4年前

感谢大家!我知道问题了。原因是 数据量过大导致的。

^keepHungry$ 4年前
< >
分享
最佳答案
0

@^keepHungry$:

参考这里

收获园豆:50
小小高 | 小虾三级 |园豆:1307 | 2019-11-29 15:13

如果用params传参 就不能获取到数据,直接报错。要将参数放到raw 中的body中 才能获取到数据。然后 我用过code 转换成代码。 放到main方法中执行,是不行的!

^keepHungry$ | 园豆:516 (小虾三级) | 2019-11-29 15:15

@^keepHungry$: 

 

请求头 ContentType : application/json  ?

小小高 | 园豆:1307 (小虾三级) | 2019-11-29 15:17

@小小高: 对。

^keepHungry$ | 园豆:516 (小虾三级) | 2019-11-29 15:18
其他回答(1)
0

这应该是你正在使用的协议和主机接受的协议不一致
//设置https协议访问
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2,SSLv3");
参考文章:https://blog.csdn.net/qq_23832313/article/details/83013998

收获园豆:50
江云风 | 园豆:889 (小虾三级) | 2019-11-29 14:55

试过 ,不行!!!
补充下,我是通过vpn连接 然后 发送http请求的

支持(0) 反对(0) ^keepHungry$ | 园豆:516 (小虾三级) | 2019-11-29 14:56

我用postman 发送请求 就可以!

支持(0) 反对(0) ^keepHungry$ | 园豆:516 (小虾三级) | 2019-11-29 14:58

@^keepHungry$:
有没有可能是你post请求的参数处理方式的问题

支持(0) 反对(0) 江云风 | 园豆:889 (小虾三级) | 2019-11-29 15:07

@無腳鳥: 怎么处理! 我是直接Map<String,String> 然后通过gson去转换成json。放到httpPost中的entity里。如果有问题,那就不能获取到200状态了

支持(0) 反对(0) ^keepHungry$ | 园豆:516 (小虾三级) | 2019-11-29 15:10

@^keepHungry$: postman可以生成 java http 请求代码哦

支持(0) 反对(0) 小小高 | 园豆:1307 (小虾三级) | 2019-11-29 15:10

@小小高: 表示 试过。然鹅 没用

支持(0) 反对(0) ^keepHungry$ | 园豆:516 (小虾三级) | 2019-11-29 15:11

@^keepHungry$: 嗯嗯,
第一、协议的问题,需要明确指定HTTPS的协议版本,
但是1、你已经查看过自己支持的协议,2、并且也改成了自己支持的协议;3、设置了协议,比如:System.setProperty("https.protocols", "TLSv1.2");结果还是不行。
那我暂时也想不出来还有什么原因。。。

支持(0) 反对(0) 江云风 | 园豆:889 (小虾三级) | 2019-11-29 15:22

@無腳鳥: 如果协议不对的话,状态码就不是200了 。

支持(0) 反对(0) ^keepHungry$ | 园豆:516 (小虾三级) | 2019-11-29 15:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册