Question

J'ai implémenté un client générique REST WebService. Tout fonctionne correctement, sauf la demande de suppression. Il renvoie toujours une erreur "404 -> non trouvée", mais lorsque vous utilisez d'autres outils (Firefox Poster & Curl), je peux exécuter la demande de suppression, de sorte que le client WebService fonctionne et fonctionne.

La méthode qui échoue:

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);
    }
}

Lors de l'exécution de l'instruction 'Builder.Delete (returnClass)', UniformInterfaceException.

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)

Le WeBresource est le même que pour mes autres demandes, donc ce n'est pas le problème ni les variables (Bustank, Urlextension, ReturnClass & CustomHeaders) sont correctes et lorsque j'utilise ces valeurs dans d'autres outils de test, j'obtiens une réponse correcte.

Quelqu'un sait pourquoi je reçois toujours cette erreur 404?

Était-ce utile?

La solution

Veuillez noter que WeBresource est immuable. Webresource.path () ne modifie pas le webreource existant. Il en crée un nouveau. Je suppose donc, après la validation ... lignes, au lieu de ceci:

webResource.path(urlExtension);

Vous voulez faire ceci:

webResource = webResource.path(urlExtension);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top