comment télécharger la photo de profil facebook en java sur le disque de mon ordinateur
J'utilise le code ci-dessous, cela ne fonctionne pas.
lorsque j'utilise imageUrl sur le navigateur, sa redirection quelque part fonctionne.
Mais j'ai n nombre d'id facebook seulement et chaque fois que l'url redirigée est différente.
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
public class SaveImageFromUrl {
public static void main(String[] args) throws Exception {
String imageUrl = "http://graph.facebook.com/67563683055/picture?type=square";
String destinationFile = "C:\\Users\\emtx\\Desktop\\Nxg-pic.png";
saveImage(imageUrl, destinationFile);
}
public static void saveImage(String imageUrl, String destinationFile) throws IOException {
URL url = new URL(imageUrl);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(destinationFile);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
}
}
0
Author: codePlayer, 2016-02-14
2 answers
En plus de la réponse Phsemos, vous pouvez également désactiver la redirection avec le paramètre redirect
et utiliser l'appel d'API suivant pour obtenir l'URL réelle en tant que JSON:
https://graph.facebook.com/67563683055/picture?type=square&redirect=false
Voici à quoi ressemble le JSON:
{
"data": {
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/hprofile-xaf1/v/t1.0-1/c44.44.544.544/s50x50/316295_10151906553973056_2129080216_n.jpg?oh=04888b6ef5d631447227b42d82ebd35d&oe=57250EA4"
}
}
0
Author: luschn, 2016-02-14 19:36:42
Adresse que vous utilisez vous redirige vers un autre emplacement. Puisque la classe URL ne vous redirige pas automatiquement ce que vous obtenez est
- en-têtes contenant des informations sur la redirection (comme
Location
qui vous pointe vers une nouvelle adresse), - et éventuellement body (mais dans ce cas il est vide).
Vous pouvez créer une méthode comme (basée sur: http://www.mkyong.com/java/java-httpurlconnection-follow-redirect-example/)
public static String getFinalLocation(String address) throws IOException{
URL url = new URL(address);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
int status = conn.getResponseCode();
if (status != HttpURLConnection.HTTP_OK)
{
if (status == HttpURLConnection.HTTP_MOVED_TEMP
|| status == HttpURLConnection.HTTP_MOVED_PERM
|| status == HttpURLConnection.HTTP_SEE_OTHER)
{
String newLocation = conn.getHeaderField("Location");
return getFinalLocation(newLocation);
}
}
return address;
}
Et changer votre
URL url = new URL(imageUrl);
À
URL url = new URL(getFinalLocation(imageUrl));
0
Author: Pshemo, 2016-02-14 19:29:19