为了账号安全,请及时绑定邮箱和手机立即绑定

在 Java 中复制 PHP POST 请求

在 Java 中复制 PHP POST 请求

PHP
汪汪一只猫 2023-11-03 20:26:56
我有这个有效的 PHP 脚本,它向旧服务器(我无权访问)发出 POST 请求。我需要用 Java/Spring 编写一个 REST api 来处理与这个旧服务器的所有通信。但是,我确实不断收到以下异常:SSLHandshakeException:DH ServerKeyExchange 不符合算法约束我的猜测是服务器的安全级别太低(我无法更改)。PHP 脚本设置了一个 SSL 密码列表,我不知道如何在 Java 中复制。因此问题是,如何降低 Java 应用程序的安全级别,以便它可以与服务器通信?php代码:$ch = curl_init($url);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $json);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf8'));curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,4);curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, "AES128-SHA");$response = curl_exec($ch);echo $response;我写的Java代码:CloseableHttpClient client = HttpClients.createDefault();    HttpPost httpPost = new HttpPost(url);httpPost.setEntity(new StringEntity(json));CloseableHttpResponse response = client.execute(httpPost); //Here SSLHandshakeException occurs    String result = getResultStringFromResponse(response);    client.close();return result;一般来说,我对 POST 请求的经验非常有限,并且已经研究这个问题好几天了,但没有任何进展。任何指导/提示将不胜感激!
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

我通过删除 java 对 http 请求所需的关键约束来解决这个问题。

这是通过转到我的 jdk 文件夹并删除文件 /conf/security/java.security 中的“DH keySize < 1024”来完成的。这一变化使得java接受服务器的低安全级别。如果有人知道如何在运行时执行此操作(例如仅针对特定的 POST 请求),那将是一个更好的解决方案。



查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 58 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信