目前,我正在尝试使用 HTTPS 和 POST 方法寻址网络服务器,并将 JSON 文件发送到该服务器。我已经尝试过几个教程,但不幸的是我只能找到 HTTP 和 Post 的示例,而不是 HTTPS。我是否忘记实现某些事情? 我想提供服务器的代码,但我只收到了地址和JSON文件的格式。
有人遇到过这个问题或者可以帮助我吗? 谢谢
public static void main(String[] args) throws IOException {
URL url = new URL(" https://webservice.com:1234");
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json; utf-8");
con.setRequestProperty("Accept", "application/json");
//con.setDoInput(true);
con.setDoOutput(true);
String jsonInputString = "\"ID\": \"12\"";
System.out.println(jsonInputString);
try(OutputStream os = con.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
os.flush();
}
System.out.println(con.getResponseCode());
不幸的是,我总是收到此错误消息:
Exception in thread "main" javax.net.ssl.SSLException: Unsupported or unrecognized SSL message at java.base/sun.security.ssl.SSLSocketInputRecord.handleUnknownRecord(SSLSocketInputRecord.java:439) at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:184) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:108) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1180) at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1091) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187) at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1362) at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1337) at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:247) at test.main(test.java:40)
Process finished with exit code 1
最佳答案
有时,如果服务不安全,https 会返回 SSL 错误。这种情况在 localhost 或某些只有 http 的服务器上经常发生。也许尝试删除 's'
关于java - 无法使用 POST 方法和 HTTPS 将 JSON 数据发送到 Java 的 Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806437/