Problema esecuzione script php tramite java

di il
5 risposte

Problema esecuzione script php tramite java

Ciao ragazzi! Vi spiego brevemente il mio problema. Ho uno script php caricato su un server virtuale su aruba. Questo script, quando viene eseguito, effettua un'inserimento in un db caricato sullo stesso server. Ho provato ad eseguire lo script tramite java ma non funzionava, allora ho semplificato il tutto per capire un pò dove fosse il problema e credo di poter affermare che il problema sia nella parte java. Questo è il codice che utilizzo per eseguire lo script:

try {
	URL url = new URL("http://mioserver/mioscript.php");
	URLConnection connection = url.openConnection();
	connection.connect();
} catch (Exception e) {
	System.out.println("error");
}
ovviamente mioserver e mioscript.php sono sostituiti dai loro nomi reali. Quando eseguo in java, non viene sollevata alcuna eccezione ma, allo stesso tempo nel db non viene effettuato alcun inserimento. Incollando lo stesso url manualmente in un browser, l'inserimento nel db viene effettuato regolarmente. Per questo motivo credo di poter affermare che il problema sia nella parte java, visto che lo script eseguito incollando lo stesso url nel browser funziona alla perfezione. Qualcuno saprebbe aiutarmi? Grazie mille

5 Risposte

  • Re: Problema esecuzione script php tramite java

    spx ha scritto:


    
    try {
    	URL url = new URL("http://mioserver/mioscript.php");
    	URLConnection connection = url.openConnection();
    	connection.connect();
    } catch (Exception e) {
    	System.out.println("error");
    }
    
    ovviamente mioserver e mioscript.php sono sostituiti dai loro nomi reali. Quando eseguo in java, non viene sollevata alcuna eccezione ma, allo stesso tempo nel db non viene effettuato alcun inserimento. Incollando lo stesso url manualmente in un browser, l'inserimento nel db viene effettuato regolarmente.
    Se incolli l'url nella barra dell'indirizzo di un browser e funziona, vuol dire che stai facendo la richiesta in GET ed è quindi accettata da quello script (non è comunque una buona cosa fare "modifiche" su DB da una richiesta in GET).

    Comunque il solo connect() non basta. E' sufficiente che dopo il connect (o anche senza il connect) fai un altro metodo che si aspetta qualcosa in response, tipo il getContentLength() o il getContentType().
  • Re: Problema esecuzione script php tramite java

    andbin ha scritto:


    spx ha scritto:


    
    try {
    	URL url = new URL("http://mioserver/mioscript.php");
    	URLConnection connection = url.openConnection();
    	connection.connect();
    } catch (Exception e) {
    	System.out.println("error");
    }
    
    ovviamente mioserver e mioscript.php sono sostituiti dai loro nomi reali. Quando eseguo in java, non viene sollevata alcuna eccezione ma, allo stesso tempo nel db non viene effettuato alcun inserimento. Incollando lo stesso url manualmente in un browser, l'inserimento nel db viene effettuato regolarmente.
    Se incolli l'url nella barra dell'indirizzo di un browser e funziona, vuol dire che stai facendo la richiesta in GET ed è quindi accettata da quello script (non è comunque una buona cosa fare "modifiche" su DB da una richiesta in GET).

    Comunque il solo connect() non basta. E' sufficiente che dopo il connect (o anche senza il connect) fai un altro metodo che si aspetta qualcosa in response, tipo il getContentLength() o il getContentType().
    Grazie mille! Ho provato e funziona! A questo punto però vorrei prendere spunto dai tuoi consigli per farti un'altra domanda.
    Poichè si tratta di un progetto universitario (la parte "web" non rientra nel corso ma è necessaria per il funzionamento dell'applicazione) qual è il modo migliore per effettuare query (e ricevere risposte) tra un'applicazione java ed un server php? Grazie ancora
  • Re: Problema esecuzione script php tramite java

    spx ha scritto:


    Poichè si tratta di un progetto universitario (la parte "web" non rientra nel corso ma è necessaria per il funzionamento dell'applicazione) qual è il modo migliore per effettuare query (e ricevere risposte) tra un'applicazione java ed un server php? Grazie ancora
    Per cose e necessità basilari, le classi del package java.net vanno più che bene. Per cose più particolari ci sono librerie/framework appositi.
    Comunque per fare la cosa un po' più completa, puoi verificare lo status code che ricevi in response, eventualmente verificare il body della response, ecc...
    Dipende da cosa fanno quelle tue pagine php.
  • Re: Problema esecuzione script php tramite java

    andbin ha scritto:


    Per cose e necessità basilari, le classi del package java.net vanno più che bene. Per cose più particolari ci sono librerie/framework appositi.
    Comunque per fare la cosa un po' più completa, puoi verificare lo status code che ricevi in response, eventualmente verificare il body della response, ecc...
    Dipende da cosa fanno quelle tue pagine php.
    Grazie! In realtà questo codice l'ho semplificato al massimo per essere più specifico nel porre la domanda ma devo gestire le cose che hai scritto (verificare l'esito delle query ecc..). Ne approfitto per chiederti un'ultima cosa a proposito. Sapresti consigliarmi un buon modo (magari anche semplice) per gestire json in java? Mi riferisco in particolare a codificare oggetti/array json da inviare al server e decodificare quelli rievuti dal server. Grazie
  • Re: Problema esecuzione script php tramite java

    spx ha scritto:


    Sapresti consigliarmi un buon modo (magari anche semplice) per gestire json in java? Mi riferisco in particolare a codificare oggetti/array json da inviare al server e decodificare quelli rievuti dal server. Grazie
    Ecco, la questione di JSON (e in maniera molto similare, XML) è un altro aspetto importante nella gestione dei servizi su HTTP.
    Per JSON/XML esistono svariate librerie dedicate alla (de)serializzazione di questi formati da/a oggetti Java. Solo per JSON, le due librerie più note sono la Jackson e la Google Gson (ma ce ne sono sicuramente altre di cui ora mi sfugge il nome).
    Queste librerie le puoi usare direttamente tu (avendo in mano oggetti Java o nell'altro senso un String o uno stream di byte). Oppure ci sono librerie/framework per la gestione client e/o server di HTTP che sono in grado di usare una di queste librerie in automatico (se presenti in classpath) per fare la (de)serializzazione di JSON o XML.
Devi accedere o registrarti per scrivere nel forum
5 risposte