[JAVA] Que faire lorsque le code d'état HTTP 302 se produit lors de la connexion à une URL externe

Aperçu

Par exemple, lors de l'écriture d'un programme qui télécharge et récupère des fichiers à partir d'un site externe, selon le site, il peut être téléchargé avec un navigateur, mais si vous connectez l'URL à partir du code, une erreur peut se produire. En fait, lorsque je vérifie comment il peut être téléchargé avec un navigateur avec DevTools de Chrome, etc., le code d'état HTTP 302 est renvoyé à l'URL à laquelle je suis allé. Cette fois, j'écrirai une note sur la correspondance concernant ce code d'état HTTP 302.

Qu'est-ce que le code d'état HTTP 302?

Comme indiqué dans l'article Qu'est-ce que le code d'état HTTP "302 redirect", 302 aurait une "redirection temporaire". Dans le cas de 302, l'URL affichée dans le navigateur ne change pas, donc à moins que vous n'utilisiez DevTools etc., l'utilisateur ne remarquera pas que vous êtes redirigé.

Comment gérer le programme

Lorsque la réponse 302 est renvoyée, l'URL de la destination de redirection est stockée dans le "Location" de l'en-tête. Par conséquent, vous pouvez vous reconnecter à l'URL stockée dans cet emplacement. L'article StackOverflow à ici présente l'implémentation Java.

Exemple d'implémentation

Presque une copie de l'article Stack Overflow ci-dessus, mais un exemple d'implémentation.

Sample.java


public class Sample {

  //Obtenez des informations CSV de PhishTank
  public void urlSample() {
    try {
      //Connectez-vous à l'URL avant la redirection
      URL url = new URL("https://xxxx/xxxxxx");
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setInstanceFollowRedirects(false);
      String redirectLocation = conn.getHeaderField("Location");
      conn.disconnect();
      //Reconnectez-vous avec l'URL redirigée
      URL afterRedirectUrl = new URL(redirectLocation);
      InputStreamReader in = new InputStreamReader(afterRedirectUrl.openStream());
      //Après cela, le traitement des données reçues
    } catch (Exception e) {
      //La gestion des erreurs
    }
  }
}

Recommended Posts

Que faire lorsque le code d'état HTTP 302 se produit lors de la connexion à une URL externe
[Rails] Comment se connecter à une API externe à l'aide du client HTTP (j'ai essayé de me connecter à l'API Qiita)
[Swift] Cellule de vue tableau, comment accéder à une URL externe
Que faire si une exception UnsupportedCharsetException se produit dans un JRE léger
Comment insérer une bibliothèque externe
Que faire lorsqu'une exception javax.batch.operations.JobStartException se produit
Que faire si une erreur se produit lorsque nokogiri entre lors de l'installation du bundle