requêtes CGI - Java - Programmation
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.
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.
Marsh Posté le 22-07-2004 à 17:13:48
Quand je dis "<adresseIP de la camera>, je comprenait aussi le port qui est 8080.
Marsh Posté le 22-07-2004 à 17:24:02
Ce qui est evident a deviner !!!
<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
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.
Marsh Posté le 22-07-2004 à 17:35:53
zaobisgero a écrit : |
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
Marsh Posté le 22-07-2004 à 17:40:54
Et t'as une idée avec URL?
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)
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
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
Marsh Posté le 22-07-2004 à 17:54:03
Par contre,
j'ai pas d'erreur de code.
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"
Marsh Posté le 22-07-2004 à 18:08:00
zaobisgero a écrit : |
pourquoi tu passes pas ton parametre ici comme dans ta page web ?
Citation : |
ca je pense pas que t'en ai besoin
Citation : |
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 ?
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 ());
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...)
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...
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 !
Marsh Posté le 23-07-2004 à 13:05:49
zaobisgero a écrit : |
super l'entraide, merci...
edit: d'autant que j'ai rien lu d'agressif ici, alors calmes toi hein
Marsh Posté le 23-07-2004 à 13:08:09
on dawate
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...
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! |
alors ,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
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...