Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Java] Servlet - HttpCommonClient

    Ho bisogno di costruire una servlet che, presi i parametri della Http Request usi il Common Http Client di Jakarta per aprire una connessione verso l'url letto nella request. Qualche idea? Ho provato ad usare la TrivialApp (http://svn.apache.org/viewcvs.cgi/*c...ava?rev=155418) indicata nella documentazione di Jakarta, ma non riesco ad eseguirla, ottengo
    codice:
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    	at org.apache.commons.httpclient.HttpClient.<clinit>(HttpClient.java:65)
    	at TrivialApp.main(TrivialApp.java:79)
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Hai scaricato il pacchetto?

    http://jakarta.apache.org/commons/logging/
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    A dire il vero no, però se lancio senza parametri ottengo

    Usage: java -classpath <classpath> [-Dorg.apache.commons.logging.simplelog.defaultlog=< loglevel>] TrivialApp <url> [<username> <password>]
    <classpath> - must contain the commons-httpclient.jar and commons-logging.jar
    <loglevel> - one of error, warn, info, debug, trace
    <url> - some valid URL
    <username> - username for protected page
    <password> - password for protected page

    quindi non indicando il loglevel mi aspetterei di non aver bisogno del pacchetto per il logging.
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    bhè, l'errore che ti riporta lì sopra è chiaro, non trova la classe... poi per il resto non ti so dire
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Originariamente inviato da Andrea1979
    Hai scaricato il pacchetto?

    http://jakarta.apache.org/commons/logging/
    Si il problema è quello! Io ho usato HttpClient sempre di apache ed ha anche lui un paio di dipendenze da inserire nel classpath dell'applicazione, tra queste anche il commons-logging di jakarta. Comunque una connessione Http la puoi fare anche con la normale API inclusa nelal JDK non hai necessità di librerie esterne
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  6. #6
    Sì, lo so, ma devo costruire un'applicazione abbastanza complessa, un proxy che faccia content e url filtering, e il prof mi ha consigliato di usare il CommonHTTPClient
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  7. #7
    Originariamente inviato da mxa
    Sì, lo so, ma devo costruire un'applicazione abbastanza complessa, un proxy che faccia content e url filtering, e il prof mi ha consigliato di usare il CommonHTTPClient
    Capisco, si ti risparmia un po di lavoro low-level e parti già da una concezione object oriented dell'intero protocollo di connessione.Buon lavoro
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    Ho un po' capito come funziona, ma ho un problema: ho scritto una classe con un metodo statico da richiamare dalla mia servlet che gestisce per il momento le richieste get alle pagine web. La classe è la seguente:
    codice:
    import org.apache.commons.httpclient.*;
    import org.apache.commons.httpclient.methods.*;
    
    public class PageRequest {
    
    	public static String getPage(String host){
    		String url=host;
    		String contents="";
    		try {
    			System.out.println(url);
    			HttpClient client = new HttpClient();
    			GetMethod method = new GetMethod( url );
    			method.setFollowRedirects( true );
    
    		    // Esegue il metodo GET
    			int statusCode = client.executeMethod( method );
    			if( statusCode != -1 ) {
    				contents = method.getResponseBodyAsString();
    				method.releaseConnection();
    			}
    		}
    		catch( Exception e ) {
    			contents="Si &egrave; verificato un errore.";
    		}
    		return contents;
    	}
    }
    Il problema è che a runtime mi genera un sacco di eccezioni:
    codice:
    Log di tomcat
    2006-04-06 14:07:28 StandardWrapperValve[GR]: Servlet.service() for servlet GR threw exception
    java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
            at GestRequest.doGet(GestRequest.java:35)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:743)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
            at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
            at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
            at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
            at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
            at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
            at java.lang.Thread.run(Thread.java:534)
    Il problema è forse che non trova dove ho piazzato i jar del common-http-client e delle sue dipendenze? In effetti se faccio una classe simile a quella sopra ma con tutto dentro il main lanciandola da riga di comando devo settare con il flag -classpath il percorso di tutti i jar. Ora, quello che mi chiedo è:
    a) Come faccio a far in modo che al momento di richiamare dei metodi all'interno di classi di un package compresso in jar che sta in una posizione qualsiasi del filesystem questi metodi vengano effettivamente trovati dalla servlet?
    b) se a) non fosse possibile, dove piazzo all'interno del filesystem i miei jar per far sì che vengano visti al momento dell'esecuzione da parte della servlet?

    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  9. #9
    Ho scoperto la funzione della directory lib ...
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  10. #10
    Originariamente inviato da mxa
    Ho scoperto la funzione della directory lib ...
    Leggiti un libro su JSP e Sevlets se vuoi accettare un consiglio, queste cose non le dovresti "scoprire"...Ce n'è uno caruccio online e scaricabile in pdf gratuitamente, cerca coreservlets cu gogle e trovi al volo il sito. Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.