java - 无法使用 POST 方法和 HTTPS 将 JSON 数据发送到 Java 的 Web 服务器

标签 java json post https webservice-client

目前,我正在尝试使用 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/

相关文章:

java - 如果用户登录,则显示/隐藏元素?

java - 未找到原生的实现

http - 从 Java 代码调用 Sling Servlet

java - 不同类中的不同 HTTP POST 使用相同的方法?

java - Jackson JSON Unicode 符号处理

asp.net-mvc-3 - 从另一个 Action 重定向到发布 Action

java - 致命异常 : main java. lang.NoClassDefFoundError : org. apache.commons.net.ftp.FTPClient Android Studio

java - 卸载现有版本的 apk(如果存在)然后重新安装

json - 反序列化与 Symfony Serializer Component 有关系的实体

java - 如何使用 Jackson 指定要序列化为 JSON 的特定字段?