2015-02-18 3 views
0

Я использую jersey-клиент для отправки данных в веб-сервис. Я заметил какое-то странное поведение от клиента Джерси.jersey client not throwing exceptions property

Я использую следующий код:

WebResource resource=null; 
    try { 
     ClientResponse response = resource.accept(mediaType).post(ClientResponse.class, requestEntity); 

System.out.println("Successful response received, statusCode=" + jerseyClientResponse.getStatus());) 

    } catch (UniformInterfaceException e) { 
     ClientResponse r = e.getResponse(); 
     System.out.println("Exception from server, statusCode="+r.getStatus()); 
    } 

Если сервер возвращает 404 статуса, я ожидал джерси бросить UniformInterfaceException исключения, но когда я выполнить код, я получаю следующее сообщение:

Successful response received, statusCode=404 

Может ли кто-нибудь сказать мне, почему UniformInterfaceException не получает бросок?

Я использую jersey client version 1.18.

Заранее благодарен!

+0

Согласно документации (https://jersey.java.net/apidocs/1.8/jersey/index.html?com/sun/jersey/api/client/UniformInterfaceException.html) генерируется UniformInterfaceException «если статус ответа HTTP больше или равен 300, а c не является типом ClientResponse». В вашем случае «c» имеет тип ClientResponse, поэтому исключение не выбрасывается. –

+0

Спасибо! Я пропустил это :( – user1229404

ответ

1

Может ли кто-нибудь сказать мне, почему UniformInterfaceException не получается брошен?

Он определен в contract for this method.

UniformInterfaceException - если статус ответа HTTP является больше или равно 300, и с не тип ClientResponse.

Используйте тип, отличный от ответа клиента, для получения желаемого результата.

Client client = Client.create(); 
    WebResource webResource = client 
      .resource("http://google.com/fake/no_url"); 
    Object requestEntity = null; 
    final String post = webResource.post(String.class, requestEntity); 

Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: POST http://google.com/fake/no_url returned a response status of 411 Length Required 
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:686) 
+0

Спасибо большое! Я пропустил ** c не тип ClientResponse ** полностью :( – user1229404

Смежные вопросы