我有一个 Web 客户端 (JavaScript),将请求发送到在 TOMCAT 8.5 上运行的 Servlet。
请求是使用
$HTTP(req)
发送的,并且在检查 req
的内容时(即在 Chrome 中只需将光标移动到其顶部),它会显示:
data:"request=%7B%....."
headers: Object
Content-Type: "application/text ; charset=UTF8"
method: "GET"
timeout: 10000
url: "http://localhost:8080/MyServlet/Dispatcher"
备注:
编码字符串的长度约为 200 个字符,尽管我也尝试过较短的字符串,
我也尝试过
JSON
而不是text
,但同样的问题仍然存在。
servlet(用于调试目的)检查是否收到任何参数,如果没有找到参数,则返回默认响应。
我还在 serlet 的 doGET 方法中添加了以下代码:
System.out.println("[DBG] - Printing all received parameters...");
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
System.out.println("[DBG] - Received parameter name is: " + paramName);
String[] paramValues = request.getParameterValues(paramName);
for (int i = 0; i < paramValues.length; i++) {
String paramValue = paramValues[i];
System.out.println("[DBG] - Received parameter value is: " + paramValue);
}
}
System.out.println("[DBG] - End Printing all received parameters.");
无论名称如何,都应该打印收到的任何参数。
到目前为止,我总是得到默认响应(意思是,没有收到参数)并且打印到控制台显示:
[DBG] - Printing all received parameters...
[DBG] - End Printing all received parameters.
同样,这意味着没有收到任何参数。
我在这里做错了什么?
在 servlet 中,我尝试使用以下声明获取参数的值:
String Web_Request = request.getParameter("request") ;
如果这是 GET 请求,则正文(上下文中的数据)将被忽略。如果您想作为请求参数发送,则必须将其附加到 url 并尝试获取
request.getParameter("request")
形式的值,这将返回您要添加的字符串。
我找到了解决方案。我没有将参数作为附加到标头
data:
字段的字符串传递,而是设置:
params:{request:'{<stringifyed JSON>}'}
现在,参数正在到达 SERVLET。