2010-10-26 5 views
3

Comme le dit le titre ... J'ai essayé d'utiliser le code suivant pour exécuter un script PHP lorsque l'utilisateur clique sur un bouton dans mon application Java Swing:Comment puis-je appeler un script PHP à partir du code Java?

URL url = new URL("http://www.mywebsite.com/my_script.php"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.connect(); 

Mais rien ne se passe ... Y at-il quelque chose faux ?

+0

Ce n'est pas exactement "appeler PHP depuis Java". C'est juste "faire une requête HTTP". L'autre extrémité de cette requête HTTP pourrait être PHP ... ou du contenu statique, Ruby on Rails, ou encore plus Java. Du point de vue de votre code, c'est simplement une requête HTTP. Donc, Gareth Davis est correct ci-dessous ... une fois que vous avez ouvert cette connexion HTTP, vous devez invoquer une autre méthode pour envoyer votre requête HTTP et obtenir une réponse HTTP. C'est vrai même si vous ne vous souciez pas de faire quoi que ce soit avec cette réponse. –

+0

Aha ... J'ai ce Steve. – Brad

Répondre

5

Je pense que vous manquez l'étape suivante qui est quelque chose comme:

InputStream is = conn.getInputStream(); 

HttpURLConnection ouvre essentiellement que la prise connect afin de faire quelque chose que vous devez faire quelque chose comme appeler getInputStream() ou mieux encore getResponseCode()

URL url = new URL("http://google.com/"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK){ 
    InputStream is = conn.getInputStream(); 
    // do something with the data here 
}else{ 
    InputStream err = conn.getErrorStream(); 
    // err may have useful information.. but could be null see javadocs for more information 
} 
+0

Merci Gareth ... Ça marche maintenant très bien. J'ai d'abord pensé que connect() appelle automatiquement l'URL et l'exécute directement puisque j'utilise HttpURLConnection et non URLConnection. – Brad

+0

Pas de soucis. Comme vous pouvez le voir dans mon deuxième exemple, les appels à connect() sont en fait facultatifs. pour être honnête si vous faites autre chose que la chose la plus simple que vous pourriez envisager d'utiliser HttpClient d'apache –

+0

Salut, je veux poser des questions sur InputStream. Pourquoi exécuter un script php nous avons besoin d'InputStream pas le OutputStream? – aLIEz

1
final URL url = new URL("http://domain.com/script.php"); 
final InputStream inputStream = new InputStreamReader(url); 
final BufferedReader reader = new BufferedReader(inputStream).openStream(); 

String line, response = ""; 

while ((line = reader.readLine()) != null) 
{ 
    response = response + "\r" + line; 
} 

reader.close(); 

"réponse" tiendra le texte de la page. Vous voudrez peut-être jouer avec le retour chariot (selon le système d'exploitation, essayez \ n, \ r, ou une combinaison des deux).

Espérons que cela aide.

Questions connexes