J'ai une URLConnection, qui accède à une page web.Java Charger l'image depuis URLConnection
URL url = new URL("https://domain");
con = url.openConnection();
con.setDoOutput(true);
Puis j'ai envoyé des données au serveur en utilisant con.setRequestProperty()
Je reçois les cookies réponse Fro champ spécifié mA à l'aide
String headerValue = con.getHeaderField(6);
Je reçois aussi le code html et analyser une URL d'image à partir de là . Mais voici un problème. Je peux obtenir cette image seulement en renvoyant des données de cache au serveur, quand j'accède à mon image.
donc j'ouvrir une nouvelle connexion
URL url1 = new URL("https://domain/image);
URLConnection con1 = url1.openConnection();
J'envoie les biscuits au serveur con1.setRequestProperty("Cookie", headerValue);
Et enfin j'essaie d'acces l'image en utilisant BufferedInputStream, puis la création d'un iamge dans un JLabel
BufferedInputStream in = new BufferedInputStream(con1.getInputStream());
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
int c;
while ((c = in.read()) != -1) {
byteArrayOut.write(c);
}
Image image = Toolkit.getDefaultToolkit().createImage(
byteArrayOut.toByteArray());
label.setIcon(new ImageIcon(image));
Le problème est que cela ne semble pas fonctionner. Est-ce une autre façon d'obtenir un fichier à partir d'un serveur via un URlConnection? Code d'erreur
Server returned HTTP response code: 400 for URL: https://domain/image
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
de Merci à l'avance
Le code d'état 400 signifie "Demande incorrecte", le client envoie donc un message non valide ou non compris par le serveur. Pouvez-vous ajouter la valeur de l'en-tête Cookie que vous avez définie dans votre demande? –
oh, je pensais à cela, mais seulement après votre commentaire, j'ai essayé de modifier la demande cookis. En fait le serveur m'a envoyé des cookies comme "4ASP.NET_SessionId = 5gw3fg55ildrqs552q5qoa55; path = /; HttpOnly" et il veut que je renvoie seulement 4ASP.NET_SessionId = 5gw3fg55ildrqs552q5qoa55; , sans autre. – artouiros