2013-10-23 2 views

Antwort

51

Der folgende Code funktioniert bei mir in Jersey 2.3.1 (Inspiration hier: 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

Ich bezweifle, dass das funktioniert. .property (...) gibt eine Client-Instanz (Builder-Muster) zurück. Die Einstellungen werden beim Aufruf von .target() nicht verwendet. – mkuff

+4

Eigentlich funktioniert es. Das Builder-Muster sagt nicht, dass eine andere Instanz erstellt werden soll. Schauen Sie sich einfach den Quellcode an, der Rückgabewert ist der eigentliche Client (nur um spätere Aufrufe zu erleichtern). –

20

Sie können auch ein Timeout pro Anfrage angeben:

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(); 
    } 
} 
Verwandte Themen