Я пытаюсь отправить String на сервер (работает на tomcat) и вернуть его в String. Клиент отправляет строку, сервер ее получает, но когда клиент возвращает ее, String имеет значение NULL.doGet и doPost String = null issue
doGet() должен установить строку в = вход от клиента. Но doPost() отправляет String in = null.
Почему? Я бы предположил, что doGet() работает до doPost(), потому что он сначала вызывается клиентом.
Сервер:
private String in = null;
public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException{
try{
ServletInputStream is = request.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
in = (String)ois.readObject();
is.close();
ois.close();
}catch(Exception e){
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException{
try{
ServletOutputStream os = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(in);
oos.flush();
os.close();
oos.close();
}catch(Exception e){
}
}
Клиент:
URLConnection c = new URL("***********").openConnection();
c.setDoInput(true);
c.setDoOutput(true);
OutputStream os = c.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject("This is the send");
oos.flush();
InputStream is = c.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
System.out.println("return: "+ois.readObject());
ois.close();
is.close();
oos.close();
os.close();
'doPost' не работает на * все *, если вы фактически ничего не публикуете. И я немного смущен; что конкретно вы * стараетесь делать? Если вы пишете сервлет, используйте HTTP-соединения. Если вы хотите перетасовать объекты назад и вперед, откройте сокет. –
is doPost не получает вызов, когда клиент запрашивает InputStream? – CptRayMar
Я только тестирую сервер на этом этапе. Я хочу отправить сервер sql в виде строки и поговорить с базой данных сервера, а затем вернуть результат. – CptRayMar