Удалить с клиентом веб-сервиса для отдыха Джерси всегда бросает 404

StackOverflow https://stackoverflow.com/questions/8417618

Вопрос

Я реализовал универсальный клиент Webservice Webservice.Все работает правильно, кроме запроса удаления.Это всегда возвращает ошибку «404 ->», но при использовании других инструментов (Firefox Paster & Curl), я могу выполнить запрос Удалить, поэтому клиент WebService работает и работает.

Метод, который не удается:

private <T> Object sendDelete(String baseURL, String urlExtension, Class<T> returnClass, CustomHeaders customHeaders) throws WebServiceDeleteRequestException {

    Validate.notNull(baseURL, "The specified Base URL is NULL!");
    Validate.notEmpty(baseURL, "The specified Base URL is empty!");
    Validate.notNull(urlExtension, "The specified URL Extension is NULL!");
    Validate.notEmpty(urlExtension, "The specified URL Extension is Empty!");
    Validate.notNull(returnClass, "The specified Class to return is NULL!");

    WebResource webResource = null;

    try {

        webResource = getRESTClient().resource(baseURL);

    } catch (ServiceClientException serviceClientException) {

        throw new WebServiceDeleteRequestException("Couldn't execute the HTTP DELETE request! The ServiceRESTClient couldn't be created!", serviceClientException);
    }

    webResource.path(urlExtension);

    try {
        if(customHeaders == null) {

            return webResource.delete(returnClass);

        } else {

            WebResource.Builder builder = webResource.getRequestBuilder();

            if(customHeaders != null) {

                for(Entry<String, String> headerValue : customHeaders.getCustomHeaders().entrySet()) {
                    builder.header(headerValue.getKey(), headerValue.getValue());
                }
            }

            builder.accept(MediaType.APPLICATION_XML);

            return builder.delete(returnClass);
        }
    } catch (Exception exception) {

        throw new WebServiceDeleteRequestException("Couldn't execute the HTTP DELETE request!", exception);
    }
}
.

При выполнении оператора «Builder.delete (ReturnClass) of reforminterfaceexception.

com.sun.jersey.api.client.UniformInterfaceException: DELETE http://localhost:8080/db/ returned a response status of 404 Not Found
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:676)
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
at com.sun.jersey.api.client.WebResource$Builder.delete(WebResource.java:583)
.

Webresource такой же, как и для моих других запросов, так что это не проблема, и не являются переменными (BaseUrl, Urlextension, ReturnClass и ChatsHeaders), и когда я использую эти значения в других тестовых инструментах, я получаю правильный ответ,

Кто-нибудь знает, почему я всегда получаю эту проблему 404?

Это было полезно?

Решение

Обратите внимание, что Webresource неизменяется.WEBRESORCE.PATH () не изменяет существующих webresource.Это создает новый.Поэтому я догадаюсь, после проверки ... строки, а не это:

webResource.path(urlExtension);
.

Вы хотите сделать это:

webResource = webResource.path(urlExtension);
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top