311 votes

Ajout de l'en-tête pour HttpURLConnection

Je tente d'ajouter un en-tête pour ma requête en utilisant HttpUrlConnection mais la méthode setRequestProperty() ne semble pas fonctionner. Le serveur ne reçoit aucune requête avec mon en-tête.

HttpURLConnection hc;
    try {
        String authorization = "";
        URL address = new URL(url);
        hc = (HttpURLConnection) address.openConnection();

        hc.setDoOutput(true);
        hc.setDoInput(true);
        hc.setUseCaches(false);

        if (username != null && password != null) {
            authorization = username + ":" + password;
        }

        if (authorization != null) {
            byte[] encodedBytes;
            encodedBytes = Base64.encode(authorization.getBytes(), 0);
            authorization = "Basic " + encodedBytes;
            hc.setRequestProperty("Authorization", authorization);
        }

1voto

Eyal Sooliman Points 1283

Avec RestAssured, vous pouvez également faire ce qui suit:

String path = baseApiUrl; //C'est l'URL de base de l'API testée
    URL url = new URL(path);
    given(). //Syntaxe de Rest Assured
            contentType("application/json"). //Type de contenu de l'API
            given().header("headerName", "headerValue"). //Certaines API contiennent des en-têtes à utiliser avec l'API 
            when().
            get(url).
            then().
            statusCode(200); //Vérifie que la réponse est 200 - OK

0voto

Cela fonctionne pour moi. J'ai dû envoyer une requête à une autre main, et transférer l'en-tête "Authorization" + jwt et quelques paramètres via POST. De l'autre côté, nous avons formé une jettyRequest avec des paramètres et des en-têtes. Si j'envoie cette séquence de code:

URL url = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)url.openConnection();
myURLConnection.setRequestMethod("POST");
myURLConnection.setRequestProperty ("Authorization", jwt); // <---- cet endroit
// du code pour ajouter des paramètres

alors je ne reçois que les paramètres dans le corps. Si j'envoie ceci:

URL url = new URL(serviceURL);
HttpURLConnection myURLConnection = (HttpURLConnection)url.openConnection();
myURLConnection.setRequestProperty ("Authorization", jwt); // <---- cet endroit
myURLConnection.setRequestMethod("POST");
// du code pour ajouter des paramètres

alors je reçois les en-têtes Authorization et les paramètres.

-1voto

Hari Krishna Points 797

Étape 1 : Obtenir l'objet HttpURLConnection

URL url = new URL(urlToConnect);
HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection();

Étape 2 : Ajouter des en-têtes à HttpURLConnection en utilisant la méthode setRequestProperty.

Map headers = new HashMap<>();

headers.put("X-CSRF-Token", "fetch");
headers.put("content-type", "application/json");

for (String headerKey : headers.keySet()) {
    httpUrlConnection.setRequestProperty(headerKey, headers.get(headerKey));
}

Référence lien

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X