Bonjour, j'essaie de créer une servlet toute simple et un client java tout aussi simple, afin de pouvoir créer un petit echange entre client et serveur, sans l'aide d'internet explorer (ou d'un équivament), avec Tomcat. J'arrive en effet à voir une servlet toute simple via le navigateur, mais le client pose problème.
J'ai trouvé 2 versions sur le net qui pourraient marcher :
- juste un client
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class SocketTest {
public static void main(String[] args){
try{
InetAddress client = InetAddress.getByName("localhost");
System.out.println(client);
Socket connexion = new Socket("192.168.1.133",8080);
PrintWriter sortie = new PrintWriter(connexion.getOutputStream(),true);
sortie.println("get / HTTP/1.0\n");
BufferedReader entree = new BufferedReader(new InputStreamReader(connexion.getInputStream()));
boolean continu = true;
while (continu) {
String ligne = entree.readLine();
if (ligne == null) continu = false;
else System.out.println(ligne);
}
}
catch(IOException e) { System.out.println("Errrreur : "+e);}
}
}
un client et une servlet :
Servlet :
import javax.servlet.http.HttpServlet;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Test extends HttpServlet {
ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try{
ObjectInputStream ois = new
ObjectInputStream(request.getInputStream());
Object query = ois.readObject();
java.util.Date date =(java.util.Date) ois.readObject();
System.out.println("Query: " + query);
System.out.println("Date : " + date);
String result = "The query was received.";
ObjectOutputStream oos = new
ObjectOutputStream(response.getOutputStream());
oos.writeObject(result);
oos.flush();
oos.close();
ois.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
doGet(request, response);
}
}
Client :
import java.net.URL;
import java.net.*;
import java.io.*;
public class Client {
public static String HOST_IP = "
http://192.168.0.3:8080/";
public Client() {
}
public static void main (String args[]){
String query = "Send me some data";
java.util.Date date = new java.util.Date();
try{
URL serverURL = null;
try{
serverURL = new
URL(HOST_IP+"TestConnection/Test");
}
catch(MalformedURLException e){
e.printStackTrace();
}
URLConnection serverConn = serverURL.openConnection();
serverConn.setDoInput(true);
serverConn.setDoOutput(true);
serverConn.setUseCaches (false);
serverConn.setRequestProperty("Content-Type",
"application/octet-stream");
ObjectOutputStream oos = new
ObjectOutputStream(serverConn.getOutputStream());
oos.writeObject(query);
oos.writeObject(date);
oos.flush();
oos.close();
ObjectInputStream ois = new
ObjectInputStream(serverConn.getInputStream());
Object result = null;
result = ois.readObject();
System.out.println(result);
ois.close();
Mais là encore ca ne marche pas. J'ai une erreur de type 503.
Je voudrais en plus à terme faire une connexion en https, j'ai déjà configuré tomcat pour utiliser le port 8443 en SSL et j'ai crée un certificat client. Je ne sais pas ce que je dois changer dans le code java par rapport à cela.
De plus, depuis que j'ai fait cela, eclipse ne veut plus démarrer tomcat (alors qu'il démarre tres bien avec startup.sh)
Est ce que quelqu'un y comprend qqch????
Merci