Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    2

    Inviare richiesta POST tramite JAVA

    Salve a tutti,
    Sono nuovo del forum! , anche se spesso utilizzo la vostra community proprio per risolvere problemi riguardante la programmazione!
    Da qualche giorno sto cercando di utilizzare un esempio trovato in rete per inviare i dati ad un form via POST. Nello specifico vorrei creare un semplice programma che inserendo numero di cellulare e password permetta di visualizzare il saldo residuo di una sim card della compagnia telefonica 3.
    Il form in questione è questo qui: https://areaclienti3.tre.it/login_133.jsp

    Mentro il codice è questo:

    codice:
    import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List;   import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair;   public class prova {   	private final String USER_AGENT = "Mozilla/5.0";   	public static void main(String[] args) throws Exception {   		prova5 http = new prova5();     		System.out.println("Send Http POST request"); 		http.sendPost();   	}  	 	// HTTP POST request 	private void sendPost() throws Exception {   		String url = "https://areaclienti3.tre.it/login_133.jsp?service=https%3A%2F%2Fareaclienti3.tre.it%2F133%2Fprofilo.jsp&lt=LT-11962399-NAXtCKUqT3ATw9PcUvSGgmwEnfYEvN&flowExecutionKey=e1s1";   		HttpClient client = new DefaultHttpClient(); 		HttpPost post = new HttpPost(url);   		// add header 		post.setHeader("User-Agent", USER_AGENT);   		List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); 		urlParameters.add(new BasicNameValuePair("username1", "33********")); 		urlParameters.add(new BasicNameValuePair("password", "PASSWORD")); 		/*urlParameters.add(new BasicNameValuePair("_eventId", "submit")); 		urlParameters.add(new BasicNameValuePair("lt", "LT-11962399-NAXtCKUqT3ATw9PcUvSGgmwEnfYEvN")); 		urlParameters.add(new BasicNameValuePair("execution", "e1s1")); 		urlParameters.add(new BasicNameValuePair("usertype", "MSISDN")); 		urlParameters.add(new BasicNameValuePair("username", ""));*/   		post.setEntity(new UrlEncodedFormEntity(urlParameters));   		HttpResponse response = client.execute(post); 		System.out.println("\nSending 'POST' request to URL : " + url); 		System.out.println("Post parameters : " + post.getEntity()); 		System.out.println("Response Code : " +                                      response.getStatusLine().getStatusCode());   		BufferedReader rd = new BufferedReader(                         new InputStreamReader(response.getEntity().getContent()));   		StringBuffer result = new StringBuffer(); 		String line = ""; 		while ((line = rd.readLine()) != null) { 			result.append(line); 		}   		System.out.println(result.toString());   	}   }
    L'output che ottengo è il codice HTML della pagina di login invece che della pagina dell'area clienti.
    L'esempio dal quale ho tratto spunto è reperibile a questo link: http://www.mkyong.com/java/apache-httpclient-examples/
    Qualcuno ha qualche idea?
    Vi ringrazio della disponibilità

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Inviare richiesta POST tramite JAVA

    ehm, il tag CODE va scritto a mano: come vedi usare il pulsantino rimuove tutti gli a capo (non chiedermi il perché XD)
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    2
    Ok! purtroppo non ho modificato il messaggio prima di 60 minuti e quindi lo riposrto indentato in un nuovo messaggio:
    codice:
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    
    public class prova {
    
    	private final String USER_AGENT = "Mozilla/5.0";
    
    	public static void main(String[] args) throws Exception {
    
    		prova http = new prova();
    
    		System.out.println("Send Http POST request");
    		http.sendPost();
    
    	}
    
    	// HTTP POST request
    	private void sendPost() throws Exception {
    
    		String url = "https://areaclienti3.tre.it/login_133.jsp?service=https%3A%2F%2Fareaclienti3.tre.it%2F133%2Fprofilo.jsp&lt=LT-11962399-NAXtCKUqT3ATw9PcUvSGgmwEnfYEvN&flowExecutionKey=e1s1";
    
    		HttpClient client = new DefaultHttpClient();
    		HttpPost post = new HttpPost(url);
    
    		// add header
    		post.setHeader("User-Agent", USER_AGENT);
    
    		List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
    		urlParameters.add(new BasicNameValuePair("username1", "33********"));
    		urlParameters.add(new BasicNameValuePair("password", "PASSWORD"));
    
    		post.setEntity(new UrlEncodedFormEntity(urlParameters));
    
    		HttpResponse response = client.execute(post);
    		System.out.println("\nSending 'POST' request to URL : " + url);
    		System.out.println("Post parameters : " + post.getEntity());
    		System.out.println("Response Code : "
    				+ response.getStatusLine().getStatusCode());
    
    		BufferedReader rd = new BufferedReader(new InputStreamReader(response
    				.getEntity().getContent()));
    
    		StringBuffer result = new StringBuffer();
    		String line = "";
    		while ((line = rd.readLine()) != null) {
    			result.append(line);
    		}
    
    		System.out.println(result.toString());
    
    	}
    
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da shoom
    L'output che ottengo è il codice HTML della pagina di login invece che della pagina dell'area clienti.
    Parlando molto in generale (potrebbe essere o no anche il tuo caso), quando si vuole interagire "programmaticamente" con tutti quei siti che richiedono autenticazione all'utente, bisogna prestare molta attenzione e ogni sito ha caratteristiche e requisiti differenti.

    Ad esempio potrebbe essere necessario fare comunque una prima request alla pagina di login perché ad esempio essa fornisce al client dei cookie che devi re-inviare al POST di login. Oppure potrebbe generare un url per il POST di login che contiene parametri particolari, magari ID suoi specifici o altro.

    Insomma, ogni sito può essere un caso a sé stante. Tocca a te, che vuoi "usarlo" programmaticamente, andare a scoprire come funziona, cosa fornisce, richiede, ecc...
    E questo lo fai con tutti gli strumenti di debugging possibili per il tuo browser, es. WebDeveloper per Firefox, o altro. Alla fine, devi arrivare a capire perfettamente come funziona l'interazione tra le varie pagine del sito.

    Se hai già fatto queste indagini, bene. Se non le hai fatte o le hai fatte in modo superficiale/inadeguato, (ri)falle.

    Originariamente inviato da shoom
    P.S. vedo dall'anteprima che gli spazi vengono eliminati. Spero sia comunque più comprensibile.
    Perché devi anche inserire, a mano, i tag CODE (CODE tra parentesi quadre) che contengono il codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da shoom
    P.S. vedo dall'anteprima che gli spazi vengono eliminati. Spero sia comunque più comprensibile.
    Come ho detto, il tag CODE va scritto a mano:

    [CODE]
    codice
    [/CODE]

    Altrimenti è illeggibile...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.