我面临 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/servletname
Servlet
现在我正在尝试将 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 的帮助。