requêtes CGI

requêtes CGI - Java - Programmation

Marsh Posté le 22-07-2004 à 16:33:26    

Bonjour,
 
Comment envoyer une requête CGI à une camera IP (du type http://<adresseIP de la caméra>/cgi-bin/com/ptz.cgi?move=up) en JAVA.  
Cette requête fonctionne lorsqu'elle est contenue dans une page HTML, mais je n'arrive pas à la faire fonctionner dans une interface programmée en JAVA.
 
Voici la manière avec laquelle je procède :
Socket my_socket = new Socket("10.10.100.254", 8080);
 
DataOutputStream send_data = new DataOutputStream
                  (my_socket.getOutputStream());
DataInputStream read_data = new DataInputStream
                  (my_socket.getInputStream());
 
   
send_data.writeBytes("GET/POST /cgi-bin/com/ptz.cgi?move=up HTTP/1.0\r\n" );
send_data.writeBytes("Content-type: application/x-www-form-
                     urlencoded\r\n" );
send_data.writeBytes("Authorization Basic cm9vdD0ZWRo\r\n" );
 
 
 
      String str = null;
      String firstLine = null;
      while (null != ((str = read_data.readLine())))
      {
        if (null == firstLine)
          firstLine = str;
 
 
        System.out.println( str + "\n" );
      }
         
      my_socket.close();
 
 
Merci d'avance pour un coup de pouce, ou un lien vers un prog similaire...
   


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 16:33:26   

Reply

Marsh Posté le 22-07-2004 à 16:49:07    

J'ai aussi essayé d'utiliser UrlConnection (à partir de l'URL de mon script CGI) de java.net.* mais rien n'y fait.


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 17:09:00    

Y'a un truc je je ne comprend pas
Si ton adresse est du type :  
http://<adresseIP de la caméra>/cgi-bin/com/ptz.cgi?move=up
pourquoi ouvrir ce genre de socket ?  
Socket my_socket = new Socket("10.10.100.254", 8080);  
je serais d'accord si ton url etait :  
http://<adresseIP de la caméra>:8080/cgi-bin/com/ptz.cgi?move=up
 
Essaye avec  
Socket my_socket = new Socket("10.10.100.254", 80);  
 
Sinon precise le type de problème que tu rencontres car les messages du genre : " j'arrive pas a y arriver" ne nous aident pas.  ;)  

Reply

Marsh Posté le 22-07-2004 à 17:13:48    

Quand je dis "<adresseIP de la camera>, je comprenait aussi le port qui est 8080.


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 17:24:02    

Ce qui est evident a deviner !!!  :sarcastic:  
<adresse ip de la cam : port> donc !
 
Bref , sinon t'as du detail ? l'endroit exact ou ça passe pas, le retour, le type d'exception généré ... etc

Reply

Marsh Posté le 22-07-2004 à 17:32:52    

Ce qu'on attends avec ce bout de code, c'est que la caméra se déplace vers le haut (elle est motorisée).
Or, à l'exécution, rien ne se passe, par contre, on reçoit la réponse suivante :
 
"HTTP/1.0 400 Bad Request
 
Date: Thu, 22 Jul 2004 17:29:39 GMT
 
Server: Boa/0.92o
 
Content-Type: text/html
 
<HTML><HEAD><TITLE>400 Bad Request</TITLE></HEAD>
 
<BODY><H1>400 Bad Request</H1>
 
Your client has issued a malformed or illegal request.
 
</BODY></HTML>"
 
Ce qui est étrange dans le sens où la requête utilisée fonctionne parfaitement dans une page HTML.  
 


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 17:35:53    

zaobisgero a écrit :


send_data.writeBytes("GET/POST /cgi-bin/com/ptz.cgi?move=up HTTP/1.0\r\n" );


ben oui, la ca peut pas marcher.... mais tu devrais persister avec URL plutot que comme ca, la c'est un peu de la bidouille

Reply

Marsh Posté le 22-07-2004 à 17:40:54    

Et t'as une idée avec URL?


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 17:47:37    

zaobisgero a écrit :

Et t'as une idée avec URL?

si tu nous file un bout de code, et surtout l'erreur, on en aura peut-etre (je ne pense pas que ce soit la même)

Reply

Marsh Posté le 22-07-2004 à 17:52:47    

j'ai pas mal touché l'urlConnection style:  
 
 
try  
{  
URL url;  
URLConnection urlConn;  
DataOutputStream printout;  
DataInputStream input;  
 
url = new URL ("http://10.10.100.254:8080/cgi-bin/com/ptz.cgi" );  
urlConn = url.openConnection();  
urlConn.setDoInput (true);  
urlConn.setDoOutput (true);  
urlConn.setUseCaches (false);  
urlConn.setRequestProperty("Content-Type", "text/plain" );  
 
// envoi requete  
printout = new DataOutputStream (urlConn.getOutputStream ());  
 
String content ="move=" + URLEncoder.encode ("up" );  
 
printout.writeBytes (content);  
printout.flush ();  
printout.close ();  
 
 
// reception reponse.  
input = new DataInputStream (urlConn.getInputStream ());  
String str = null;  
String firstLine = null;  
while (null != ((str = input.readLine())))  
{  
 
if (null == firstLine)  
firstLine = str;  
 
textArea.appendText (str + "\n" );  
}  
 
input.close ();  
 
}  
catch (MalformedURLException me)  
{  
me.printStackTrace();  
}  
catch (IOException ioe)  
{  
ioe.printStackTrace();  
}  
 
Renvoi 401 non autorisé pour la partie réception


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 17:52:47   

Reply

Marsh Posté le 22-07-2004 à 17:54:02    

Ton navigateur utilise peut etre le protocol http 1.1 essaye de voir aussi dans cette direction

Reply

Marsh Posté le 22-07-2004 à 17:54:03    

Par contre,  
j'ai pas d'erreur de code.  


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 17:54:18    

je regarde


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 17:55:49    

c'est toujours la même chose : pas d'erreur de code, mais reponse du type : "400 bad request"


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 18:08:00    

zaobisgero a écrit :


url = new URL ("http://10.10.100.254:8080/cgi-bin/com/ptz.cgi" );  


pourquoi tu passes pas ton parametre ici comme dans ta page web ?
 

Citation :


urlConn.setDoInput (true);  
urlConn.setDoOutput (true);  
urlConn.setUseCaches (false);  
urlConn.setRequestProperty("Content-Type", "text/plain" );  


ca je pense pas que t'en ai besoin
 

Citation :


printout = new DataOutputStream (urlConn.getOutputStream ());  
String content ="move=" + URLEncoder.encode ("up" );  
printout.writeBytes (content);  
printout.flush ();  
printout.close ();  


la tu fais du POST, ce que t'aurais pas besoin de faire en passant le parametre directement a l'url
 
[quote]Renvoi 401 non autorisé pour la partie réception[/citation]
donc une autre erreur qu'avant. avec le navigateur, tu dois t'authentifier ?

Reply

Marsh Posté le 22-07-2004 à 18:16:00    

Je dois m'identifier, effectivement. c'est d'ailleurs ce que je fais mais rien n'y change.
Le probleme doit venir de cette ligne :
input = new DataInputStream (urlConn.getInputStream ());  


---------------
de la part de Zao...
Reply

Marsh Posté le 22-07-2004 à 21:00:11    

zaobisgero a écrit :

Je dois m'identifier, effectivement.


 

Citation :

Renvoi 401 non autorisé pour la partie réception

 
donc c'est que tu le fais pas
 
(en passant, abandonne vraiment l'idée des sockets, tu fais n'imp avec, ta requete peut pas etre valable...)

Reply

Marsh Posté le 23-07-2004 à 12:21:56    

J'ai trouvé la solution. Merci quand même d'avoir essayé, mais pour votre gouverne, il faut utiliser les sockets!
Je ne vous donnerai bien sûr pas la solution car, et d'une, vous vous en foutez, et de deux vous vous la jouez un peu de trop à mon goût. Sur ceux, sachez que c'est la dernière fois que je me promène sur un forum de ce genre où on ne trouve que des types qui passent leur temps à casser les nouveaux messages. Adieu messieurs et sachez que vous n'êtes pas des "ELUS" parce que vous êtes derrière un PC... vous n'êtes pas Neo!!! "Bienvenu dans le monde réel".
[Message terminé!]
 
P.S: Il faut respecter les gens si vous voulez qu'on vous respecte...


---------------
de la part de Zao...
Reply

Marsh Posté le 23-07-2004 à 12:45:33    

Je cherche les parties de mes messages ou j'ai manqué de respect.
Et dans les posts des autres je vois pas de truc flagrant non plus
 
1 - c'est sur que la solution nous importe moins qu'a toi, mais on aimerai bien savoir
2 - Je n'ai pas vu d'elus mais des personnes qui ont voulu aider quelqu'un d'aparement trop suceptible.  
3 - Ne pas prendre de pincettes pour dire quelque chose n'est pas un manque de respect !
 
 

Reply

Marsh Posté le 23-07-2004 à 13:05:49    

zaobisgero a écrit :


Je ne vous donnerai bien sûr pas la solution car, et d'une, vous vous en foutez, et de deux vous vous la jouez un peu de trop à mon goût.


 
[:mlc] super l'entraide, merci...
 
edit: d'autant que j'ai rien lu d'agressif ici, alors calmes toi hein [:spamafote]


Message édité par uriel le 23-07-2004 à 13:06:33

---------------
IVG en france
Reply

Marsh Posté le 23-07-2004 à 13:08:09    

on dawate [:uriel]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 23-07-2004 à 13:24:08    

zaobisgero a écrit :

P.S: Il faut respecter les gens si vous voulez qu'on vous respecte...


En affichant du mépris non seulement pour ceux qui t'ont aidé mais aussi ceux qui pourraient avoir un problème semblable au tien et lire ce topic, penses-tu vraiment être meilleur que ceux que tu prétends juger? Je ne le crois pas.
 
D'autre part, personne sinon toi n'a été aggressif sur ce topic...


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 23-07-2004 à 13:33:11    

zaobisgero a écrit :

J'ai trouvé la solution. Merci quand même d'avoir essayé, mais pour votre gouverne, il faut utiliser les sockets!
Je ne vous donnerai bien sûr pas la solution car, et d'une, vous vous en foutez, et de deux vous vous la jouez un peu de trop à mon goût. Sur ceux, sachez que c'est la dernière fois que je me promène sur un forum de ce genre où on ne trouve que des types qui passent leur temps à casser les nouveaux messages. Adieu messieurs et sachez que vous n'êtes pas des "ELUS" parce que vous êtes derrière un PC... vous n'êtes pas Neo!!! "Bienvenu dans le monde réel".
[Message terminé!]
 
P.S: Il faut respecter les gens si vous voulez qu'on vous respecte...


 
alors  :hello: ,tu vas nous manquer. Sinon j'espère que c'est la dernière fois qu'on croise un gus comme toi sur le forum [:itm]
 


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 23-07-2004 à 13:42:59    

[:dawacube]


---------------
Music|Market|Feed|Loom|DVD
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed