1

我面临 Tomcat 服务器配置问题。

我已向 GoDaddy 申请证书,并已使用 Apache Tomcat 5.x 进行了相同的配置。以下是 HTTPS 配置的片段tomcat5.x\conf\server.xml

<Connector port="8443" maxHttpHeaderSize="8192" protocol="HTTP/1.1"
            maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
            enableLookups="false" disableUploadTimeout="true"
            acceptCount="100" scheme="https" secure="true"
            keystoreFile="/path/to/tomcat.keystore" keystorePass="xxxxxxxxx"
            clientAuth="false" sslProtocol="TLS" SSLEnabled="false"/>

我能够成功访问部署在我的服务器上的https://www.exampleserver.com:8443/servletnameServlet

现在我正在尝试将 HTTP 正文中的 JSON 数据发送到同一个 Servlet 的 HTTP POST 请求,并且我正在尝试在 Servlet 中记录 POST 数据,但 POST 数据为空或不可用。

以下是在doPost方法中记录 POST 数据的代码片段Servlet

    // Respond with OK and status 200 in a timely fashion to prevent redelivery
    response.setContentType("text/html");
    Writer writer = response.getWriter();
    writer.append("OK");
    writer.close();

    // Get the notification object from the request body (into a string so we
    // can log it)
    BufferedReader notificationReader =
            new BufferedReader(new InputStreamReader(request.getInputStream()));
    String notificationString = "";

    // Count the lines as a very basic way to prevent Denial of Service attacks
    int lines = 0;
    while (notificationReader.ready()) {
        notificationString += notificationReader.readLine();
        lines++;

        // No notification would ever be this long. Something is very wrong.
        if (lines > 1000) {
            throw new IOException("Attempted to parse notification payload that was unexpectedly long.");
        }
    }

    LOG.info("got raw notification " + notificationString);

Log.info语句始终打印"got raw notification ",这意味着没有可用的数据。

以前的

有趣的部分是它在Servlet使用 HTTP 而不是 HTTPS 部署或访问时起作用

更新

我尝试将 curl(JSON 数据)Servlet与 HTTP 和 HTTPS 相同,但它不适用于两者。在本地服务器上它正在工作。

老实说,我在配置 Apache Tomcat 服务器和 SSL 证书方面没有太多经验。我遵循了 GoDaddy 提供的配置步骤,当然还有 Google 的帮助。

4

0 回答 0