Pessoal, tenho fazer um projeto usando JAVA (e RMI), PHP e JSON basicamente. Preciso criar 5 servidores mas já empaquei no primeiro . Estou fazendo intercambio, não sei se é pelo idioma, mas não consigo acompanhar muito bem essa matéria (cliente/servidor). Li e reli os exemplos que o professor dá, ele mesmo me explicou, mas depois que ele fez isso complicou um pouco mais.
Bom, tenho essas classes:
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.Headers;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.io.OutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URI;
import java.net.URLDecoder;
/**
-
Classe correspondant au handler sur le contexte ‘index.html’.
*/
class AccueilHandler implements HttpHandler {public void handle(HttpExchange t) {
String reponse = “Bienvenue sur la page d’accueil
”;// Récupération des données URI requestedUri = t.getRequestURI(); String query = requestedUri.getRawQuery(); // Utilisation d'un flux pour lire les données du message Http BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(t.getRequestBody(),"utf-8")); } catch(UnsupportedEncodingException e) { System.err.println("Erreur lors de la récupération du flux " + e); System.exit(-1); } // Récupération des données en POST try { query = br.readLine(); } catch(IOException e) { System.err.println("Erreur lors de la lecture d'une ligne " + e); System.exit(-1); } // Affichage des données reponse += "<p>Données en POST : "; if(query == null) reponse += "<b>Aucune</b></p>"; else { try { query = URLDecoder.decode(query, "UTF-8"); } catch(UnsupportedEncodingException e) { query = ""; } reponse += "<b>" + query + "</b></p>"; } // Envoi de l'en-tête Http try { Headers h = t.getResponseHeaders(); h.set("Content-Type", "text/html; charset=utf-8"); t.sendResponseHeaders(200, reponse.length()); } catch(IOException e) { System.err.println("Erreur lors de l'envoi de l'en-tête : " + e); System.exit(-1); } // Envoi du corps (données HTML) try { OutputStream os = t.getResponseBody(); os.write(reponse.getBytes()); os.close(); } catch(IOException e) { System.err.println("Erreur lors de l'envoi du corps : " + e); }
}
}
import java.io.IOException;
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpContext;
import java.net.InetSocketAddress;
/**
-
Classe correspondant à un serveur Http simple.
-
Le serveur écoute sur le port 8080 sur le contexte ‘index.html’.
-
Le résultat est une simple page qui affiche les données envoyées en POST
*/
public class ServeurHttp {public static void main(String[] args) {
HttpServer serveur = null;
try {
serveur = HttpServer.create(new InetSocketAddress(8080), 0);
} catch(IOException e) {
System.err.println("Erreur lors de la création du serveur " + e);
System.exit(-1);
}serveur.createContext("/index.html", new AccueilHandler()); serveur.setExecutor(null); serveur.start();
System.out.println(“Serveur démarré. Pressez CRTL+C pour arrêter.”);
}
}
E esse é meu html
.:Login:.<body>
<form action="senha.php" method="POST">
usuário : <input name="usuario" type="text" size="30">
senhal: <input name="password" type="password" size="30">
<input name="enviar" type="submit" id="enviar" value="enviar">
</body>
E meu php, que simplesmente transforma as entradas no formato json:
<?php $login = $_POST['usuario']; $senha = $_POST['password']; require_once("classpatient.php"); $p = new patient($login, $senha); $json = json_encode($p); print_r($json); ?>Quando fiz só com html, sem php estava retonandoo o que deve, isto é, as entradas em post. Mas aí o professor falou que eu tinha que usar o php pra formatar os dados e agora eu não sei muito bem como fazer isso Alguem pode me ajudar?