无法从Servlet中检索数据
我想在HttpURLConnection
中写一些消息,我试图在Servlet中检索相同的消息。这是两种不同的应用。无法从Servlet中检索数据
消息编写代码(无异常处理)
public static void formUrlAndWrite()
{
URL url = null;
HttpURLConnection httpConnection = null;
OutputStreamWriter outStream = null;
String host = "http://127.0.0.1:8080/HttpTester";
url = new URL(host);
httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setDoOutput(true);
httpConnection.setAllowUserInteraction(true);
httpConnection.setDefaultUseCaches(false);
outStream = new OutputStreamWriter(httpConnection.getOutputStream());
outStream.write("This is a plain text");
outStream.flush();
}
servlet代码(无异常处理)
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
BufferedReader reader = null;
PrintWriter out = null;
StringBuffer buffer = new StringBuffer();
try
{
//reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
reader = request.getReader();
int read = 0;
char[] charArray = new char[2000];
while((read=reader.read(charArray))>-1)
{
buffer.append(charArray, 0, read);
}
response.setContentType("text/html");
out = response.getWriter();
out.println("<html><body>");
out.print("<h2> Request Buffer is"+buffer+"</h2>");
out.println("</body></html>");
}
}
Ť这两个应用程序异步运行,我没有从我的servlet获取输出。我的疑问是如果我运行消息写入应用程序,它会将数据写入网址。那么当我运行servlet时,它是如何得到请求的?可能我在这件事上做错了事。任何帮助表示赞赏。
我已经尝试了下面的URL,这与我的问题非常相似,但它没有帮助。
我曾使用过的Android, 这个代码,它可以帮助你,这可能不是完整的解决方案
写入服务器
try{
String u="hello";
String p="world";
URL url=new URL("http://localhost:8080/LoginExample/LoginServlet?"+"key1="+u+"&key2="+p);
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
}catch(Exception e)
{
e.printStackTrace();
System.out.println("ERROR IN URL CONNECTION---"+e);
}
ServletPage
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
try
{
System.out.println("-----servlet--------------");
// UserBean user = new UserBean();
String uname=request.getParameter("key1");
String password=request.getParameter("key2");
System.out.println("uname ins ervlet==="+uname);
System.out.println("password in servlet==="+password);
}
catch (Throwable theException)
{
System.out.println(theException);
}
}
}
如果您无法检索第二个servlet中的任何数据,可能是因为你在某处调用类似request.getParameter()
/getParameterValues()/getParameterMap()
的东西。确实,这些方法调用getInputStream()
,您只能读取请求的内容。
感谢您的回应。这个想法是我的第一个应用程序将始终在URL中写入一些内容。在第二个应用程序中,我的servlet应该检索我的第一个应用程序写的内容。我的问题是第一个应用程序的写入很好,但在我的servlet中,我没有收到内容。我需要servlet中的内容,我不想将任何内容发回给我的第一个应用程序。 – atom 2014-10-03 09:12:58
@Som Sry不明白你的需要,我编辑了我的答案。 – 2014-10-03 09:46:08
感谢您的回复。你以前的回答是正确的。我有一个Java程序,它在URL中写入一些消息。我有一个单独的servlet(一个单独的应用程序),它假设接收请求并打印由第一个java程序写入的消息。但我无法实现。我到目前为止所做的是 '在URL中编写消息(Java程序1) - >在Servlet中执行处理(Java程序2) - >打印处理后的消息(Java程序1)' 感谢您显示路径。但我原来的问题仍然没有解决。 – atom 2014-10-03 10:09:38
非常感谢您的回复。我已经尝试过你的程序。但这不起作用。我运行第一个程序然后运行servlet,我得到了 _uname ins ervlet === null_和 _password在servlet中=== null_ – atom 2014-10-03 09:20:43