我有这个有效的 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 请求的经验非常有限,并且已经研究这个问题好几天了,但没有任何进展。任何指导/提示将不胜感激!
牧羊人nacy