es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Crear una solicitud http con un URI en modo sensible a mayúsculas y minúsculas.

Tengo una solicitud https cuyo URI comienza con letra mayúscula. Lo he probado en Postman y he obtenido una respuesta, pero en mi código de vertx (io.vertx.core), no puedo obtener la respuesta deseada. Parece que el servidor de destino me rechaza.

Parece que mi URI deseado cambia automáticamente a minúsculas. Desafortunadamente, el servidor no acepta el modo cambiado.

URI deseado: /Internalservice

https://example.com/Internalservice

Utilizo este webClient: io.vertx.ext.web.client;

Este es mi método:

public CompletionStage<HttpResponse> post(String host, int port, String uri, MultiMap headers, JsonObject body) {
    return client.post(port, host, uri)
            .putHeaders(headers)
            .timeout(requestTimeout.toMillis())
            .sendJsonObject(body)
            .toCompletionStage()
            .thenApply(response -> new HttpResponse(response.statusCode(), response.body() != null ?     response.body().getBytes() : new byte[]{}));
}

¿Qué debo hacer para manejar este URI sensible a mayúsculas y minúsculas?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para manejar la URI distinguiendo mayúsculas y minúsculas en tu solicitud HTTPS, puedes intentar configurar la URI manualmente utilizando el método URI.create () en lugar de pasarla directamente al método WebClient.post (). Esto preservará el caso de la URI que deseas utilizar. Aquí tienes un ejemplo de cómo podrías modificar tu método post () para lograr esto:

    import java.net.URI;
    
    // ...
    
    public CompletionStage<httpresponse> post(String host, int port, String uri, MultiMap headers, JsonObject body) {
        URI requestUri = URI.create(uri); // crear manualmente URI para preservar el caso
        return client.post(port, host, requestUri.getPath())
                .putHeader("Host", host)
                .putHeader("Content-Type", "application/json")
                .putHeaders(headers)
                .ssl(true)
                .timeout(requestTimeout.toMillis())
                .sendJsonObject(body)
                .toCompletionStage()
                .thenApply(response -> new HttpResponse(response.statusCode(), response.body() != null ? response.body().getBytes() : new byte[]{}));
    }
    

    En este método modificado, creamos un objeto java.net.URI llamando al método URI.create (), pasando la cadena uri original. Luego usamos el método getPath () del objeto URI para extraer la porción de ruta de la URI, lo cual preserva la distinción entre mayúsculas y minúsculas. Luego usamos esta ruta como parámetro URI para el método post () y configuramos los demás encabezados y opciones como antes.

    Esto debería permitirte hacer la solicitud HTTPS con la URI que deseas, distinguiendo mayúsculas de minúsculas, utilizando WebClient y vert.x.

Comments are closed.