2015-10-08 7 views
1

J'essaie d'atteindre l'image de la caméra IP Foscam C1 avec une requête HTTP GET depuis un programme java.Obtenir l'image de la caméra IP avec la requête HTTP

HttpClient httpClient = new DefaultHttpClient(); 
    HttpGet httpGet = new HttpGet("http://192.168.1.6:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=USERNAME&pwd=PASSWORD"); 
    HttpResponse response = httpClient.execute(httpGet); 

    InputStream is = response.getEntity().getContent(); 
    BufferedReader in = new BufferedReader(new InputStreamReader(is)); 
    String line = null; 
    while((line = in.readLine()) != null) { 
     System.out.println(line); 
    } 

L'URL fonctionne parfaitement dans le navigateur.

Il écrit ce:

<html><body><img src="../snapPic/Snap_20151008-094559.jpg"/></body></html> 

Comment puis-je obtenir l'image elle-même?

///// EDIT: /////

while((line = in.readLine()) != null) { 
     line = line.substring(24, 57); //here I get the needed part 
     System.out.println(line); 
    } 
    //This all stuff should go into the loop: 
    HttpGet httpGetPicture = new HttpGet("http://192.168.1.6:88/" + line); 
    response = httpClient.execute(httpGetPicture); 

    is = response.getEntity().getContent(); 
    in = new BufferedReader(new InputStreamReader(is)); 
    line = null; 
    while((line = in.readLine()) != null) { 
     System.out.println(line); 
    } 

Je fais donc aussi une demande de get pour l'url img: Réponse:

<?xml version="1.0" encoding="iso-8859-1"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <title>404 - Not Found</title> 
</head> 
<body> 
    <h1>404 - Not Found</h1> 
</body> 
</html> 

Répondre

1

Eh bien, je d analyser le tag img pour l'URL de l'image et en faire la demande.

+0

Je ne le comprends pas. Le problème est: http://192.168.1.6:88/snapPic/Snap_20151008-103709.jpg >> 404 pas trouvé. – Tomi

+1

@ Fantom789 Et vous faites cette demande immédiatement après la première demande? Et l'URL est correcte? – Kayaman

+0

Oui maintenant vous voyez ma modification sur la question. L'URL est correcte: "http://192.168.1.6:88/" + ligne où ligne est: /snapPic/Snap_20151008-104725.jpg – Tomi

1

vous avez besoin d'utiliser d'autres params URL pour les données d'image, voir http://www.foscam.es/descarga/ipcam_cgi_sdk.pdf

également vérifier cette C# article http://blogs.infosupport.com/writing-an-ip-camera-viewer-in-c-5-0/ que vous pouvez adapter si vous souhaitez obtenir des images JPEG consécutives en tant que flux MJPEG. Vous pouvez facilement adapter ce code à Java

+0

btw, notez que l'article est pour les modèles FOSCAM MJPEG, pas les HD (l'API CGI est différente dans ceux-ci). En ce qui concerne la partie de contrôle PanTilt de cet article, je l'ai développé et ajouté un support pour les modèles MJPEG et HD Foscam, voir http://FoscamController.codeplex.com –

+0

Notez également que les modèles Foscam HD s'infiltrer pour prendre en charge ONVIF (vous pouvez définir la Port ONVIF sur la page Web des paramètres de la caméra) - http://www.onvif.org afin que l'on puisse utiliser les services Web pour saisir les cadres –