如何解决在Java中复制PHP POST请求
我有这个工作的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,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请求的经验非常有限,并且针对此问题进行了几天的研究,没有任何进展。任何指导/提示将不胜感激!
解决方法
更新:
我设法消除了Java对http请求所要求的关键约束,从而解决了这个问题。
这是通过转到我的jdk文件夹并在文件/conf/security/java.security中删除“ DH keySize
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。