2013-10-23 8 views

risposta

51

Il seguente codice funziona per me a Jersey 2.3.1 (ispirazione trovate qui: https://stackoverflow.com/a/19541931/1617124)

public static void main(String[] args) { 
    Client client = ClientBuilder.newClient(); 

    client.property(ClientProperties.CONNECT_TIMEOUT, 1000); 
    client.property(ClientProperties.READ_TIMEOUT, 1000); 

    WebTarget target = client.target("http://1.2.3.4:8080"); 

    try { 
     String responseMsg = target.path("application.wadl").request().get(String.class); 
     System.out.println("responseMsg: " + responseMsg); 
    } catch (ProcessingException pe) { 
     pe.printStackTrace(); 
    } 
} 
+2

dubito che questo funziona. .property (...) restituisce un'istanza client (modello builder). Le impostazioni non verranno utilizzate quando invochi il .target(). – mkuff

+4

Attualmente funziona. Il modello di builder non dice che dovrebbe essere creata un'altra istanza. Basta guardare il codice sorgente, il valore restituito è il vero client (solo per facilitare per noi effettuare chiamate successive). –

20

È inoltre possibile specificare un timeout per richiesta:

public static void main(String[] args) { 
    Client client = ClientBuilder.newClient(); 
    WebTarget target = client.target("http://1.2.3.4:8080"); 

    // default timeout value for all requests 
    client.property(ClientProperties.CONNECT_TIMEOUT, 1000); 
    client.property(ClientProperties.READ_TIMEOUT, 1000); 

    try { 
     Invocation.Builder request = target.request(); 

     // overriden timeout value for this request 
     request.property(ClientProperties.CONNECT_TIMEOUT, 500); 
     request.property(ClientProperties.READ_TIMEOUT, 500); 

     String responseMsg = request.get(String.class); 
     System.out.println("responseMsg: " + responseMsg); 
    } catch (ProcessingException pe) { 
     pe.printStackTrace(); 
    } 
} 
Problemi correlati