Java 如何从通过HttpClient post发送的另一个servlet读取参数?
我必须从一个servlet到另一个servlet使用HttpClient postJava 如何从通过HttpClient post发送的另一个servlet读取参数?,java,servlets,httpclient,Java,Servlets,Httpclient,我必须从一个servlet到另一个servlet使用HttpClient post CloseableHttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost( "http://localhost:8080/FitsServlets/GisServlet"); post.setHeader("Referer", "http://localhost/something"); post
CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(
"http://localhost:8080/FitsServlets/GisServlet");
post.setHeader("Referer", "http://localhost/something");
post.setHeader("Content-type", "application/json");
StringEntity params=new StringEntity("test..");
post.setEntity(params);
HttpResponse responseGis = client.execute(post);
我想读取从另一个servlet接收到的参数,但它不起作用。这是接收post并需要读取参数的servlet的代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
System.out.println("gis..");
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
System.out.println("name:" + paramName);
String[] paramValues = request.getParameterValues(paramName);
for (int i = 0; i < paramValues.length; i++) {
String paramValue = paramValues[i];
System.out.println("value: " + paramValue);
}
}
}
有人能帮我吗
谢谢 实际上,我认为您正在尝试将请求负载作为请求参数来读取 由于您要将字符串作为实体发送到第二个Servlet,因此您应该打开一个到请求的流链,然后将其作为InputStream的基础,并提取内容:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// Do whatever you want here...
InputStream is = request.getInputStream();
if (is != null) {
StringBuilder sb = new StringBuilder();
String line;
try {
BufferedReader reader =
new BufferedReader(new InputStreamReader(is, "UTF-8"));
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
} finally {
is.close();
}
System.out.println(sb.toString());
}
//...
}
你什么意思,但不起作用?您能详细说明一下吗?它打印gis..但不读取参数..我对字符串requestBody=IOUtils.toStringinput有问题;它给了我一个错误,我不能使用toString.。不适用于参数InputStream.。似乎您引用了错误的IOUtils类。我将更新我的答案,使用基本的IO材料,没有第三方库。你能解决你的问题吗?如果您对答案感到满意,您可以接受答案并投票: