Ecco il mio problema:
ho un applicazione java che deve inserire(INSERT INTO),leggere(SELECT) e aggiornare(UPDATE) i valori di un database MYSQL.
il problema è che il server su cui risiede il database non accetta connessioni esterne, quindi l'unico metodo per dialogare con il database è il php(.
cosa dovrei fare? creare una pagina php con i metodi per la gestione del database e lanciarla passandogli i dati tramite java (come faccio???)
oppure fare tutto tramite java
ho trovato una classe di esempio(spero sia per il problema che ho io) ma non riesco a farla funzionare (non mi dà ne errori ne altro però non fa nulla).
ecco la classe di esempio
try {
// Construct data
String data = URLEncoder.encode("$nome", "UTF-8") + "=" + URLEncoder.encode("provanome", "UTF-8");
data += "&" + URLEncoder.encode("$cognome", "UTF-8") + "=" + URLEncoder.encode("provacognome", "UTF-8");
data += "&" + URLEncoder.encode("$userid", "UTF-8") + "=" + URLEncoder.encode("userprova", "UTF-8");
data += "&" + URLEncoder.encode("$password", "UTF-8") + "=" + URLEncoder.encode("pswprova", "UTF-8");
data += "&" + URLEncoder.encode("$password2", "UTF-8") + "=" + URLEncoder.encode("pswprova", "UTF-8");
data += "&" + URLEncoder.encode("$email", "UTF-8") + "=" + URLEncoder.encode("prova@prova.it", "UTF-8");
// Create a socket to the host
String hostname = "http://www.**********/registrazione2.php";
int port = 80;
InetAddress addr = InetAddress.getByName(hostname);
Socket socket = new Socket(addr, port);
// Send header
String path = "/servlet/SomeServlet";
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
wr.write("POST "+path+" HTTP/1.0\r\n");
wr.write("Content-Length: "+data.length()+"\r\n");
wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
wr.write("\r\n");
// Send data
wr.write(data);
wr.flush();
// Get response
BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
wr.close();
rd.close();
} catch (Exception e) {System.out.prinln("Errore:"+e);
}
allego anche la pagina registrazione2.php
in config.php sono contenuti i dati di host user e psw per poter accedere al database
<?php
session_start();
include("include/config.php");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>registrazione</title>
<link rel="shortcut icon" href="immagini/struttura/favicon.ico" />
<?php if (ereg("MSIE", $_SERVER['HTTP_USER_AGENT'])) {?><link rel="stylesheet" type="text/css" href="stili/stile.css">
<?php }else{?> <link href="stili/stile.css" rel="stylesheet" type="text/css" /><?php }?>
</head>
<body>
<div id="container">
<div id="logo"></div>
<div id="menu">
<a href="index.htm"><img src="immagini/struttura/icona_home.png"> Home Page</a>
<a href="registrazione.php"><img src="immagini/struttura/icona_registrazione.png"> Registrazione</a>
</div>
<div id="registrazione">
<br><br><h1>Compila tutti i campi per completare la registrazione.</h1><br><br>
<?php
$nome = @$HTTP_POST_VARS["nome"];
$cognome = @$HTTP_POST_VARS["cognome"];
$userid = @$HTTP_POST_VARS["userid"];
$password = @$HTTP_POST_VARS["password"];
$password2 = @$HTTP_POST_VARS["password2"];
$email = @$HTTP_POST_VARS["email"];
if(($nome == "") || ($cognome == "") || ($userid == "") || ($password == "") || ($email == "")){
echo "E' avvenuto un errore durante la registrazione!<br><br>Hai lasciato qualche campo vuoto oppure hai usato caratteri non permessi!";
}else{
if($password == $password2){
$query = mysql_query("INSERT INTO utenti (userid, password, email, cognome, nome, credito) VALUES ('$userid', '$password', '$email', '$cognome', '$nome', '100')");
if($query == 1){
echo "Registrazione effettuata correttamente!";
}else{
echo "E' avvenuto un errore nell'inserimento del programma!<br><br>ERRORE: ".$query;
}
}else{
echo "E' avvenuto un errore durante la registrazione!<br><br>Le password inserite devono essere uguali!";
}
}
?>
</div>
</div>
</body>
</html>
di php sono ancora alle primissime armi e di java non ho mai affrontato cose del genere, ero riuscito a far funzionare i driver JDBC, ma non mi servono a niente
spero in un vostro aiuto