pb ecriture de bytearray lorsque que mon URL contient des blancs

Le
phil89
Bonsoir

J'utilise une routine pour ecrire des objets sérialisé, elle
fonctionne bien, sauf que lorsque je met des caractères blanc dans
l'URL cela n'est plus ecrit.
Je n'ai aucun message d'errreur et je n'arrive pas coté servlet dans
la methode "service".
Je pense que dans la chaine du POST je dois remplacer le caractère
blanc par autre chose, j'ai essayé %20% et entre ' ' mais sans succes

Merci d'avance


*/
public static int WritePostStreamObjectSocket(Object obj,String
host,int port,String servlet,String protocol){
int rt=0;
try{
java.io.ByteArrayOutputStream baos = new
java.io.ByteArrayOutputStream();
java.io.ObjectOutputStream oos = new
java.io.ObjectOutputStream(baos);
oos.writeObject(obj);
oos.flush();
oos.close();
byte b[] = baos.toByteArray();

java.net.Socket sock=new java.net.Socket(host,port);
java.io.OutputStream outp=sock.getOutputStream();
java.io.DataOutputStream dataout=new java.io.DataOutputStream(outp);
// MON SOUCIS DOIT ETRE DANS LA chaine "servlet" contenant un nom de
fichier qui à des blancs.

dataout.writeBytes("POST "+servlet+" HTTP/1.1");
dataout.writeBytes("Host: "+host+":"+port+"");
dataout.writeBytes("Content-type: application/octet-stream");
dataout.writeBytes("Content-length:"+" "+b.length+"");
dataout.writeBytes("");
//post data
dataout.write(b);
//lire la reponse
java.io.InputStream inp=sock.getInputStream();
java.io.DataInputStream datain=new java.io.DataInputStream(inp);
try{
rt=datain.readInt();
}
catch(Exception e1){
e1.printStackTrace();
}
datain.close();
inp.close();
dataout.close();
outp.close();
sock.close();
baos.close();
}
catch(Exception e){
System.out.println("Erreur "+e.getMessage());
e.printStackTrace();
}
return rt;
}
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eraser Head
Le #6658691
phil89 wrote:
Bonsoir

J'utilise une routine pour ecrire des objets sérialisé, elle
fonctionne bien, sauf que lorsque je met des caractères blanc dans
l'URL cela n'est plus ecrit.
Je n'ai aucun message d'errreur et je n'arrive pas coté servlet dans
la methode "service".
Je pense que dans la chaine du POST je dois remplacer le caractère
blanc par autre chose, j'ai essayé %20% et entre ' ' mais sans succes

Merci d'avance


*/
public static int WritePostStreamObjectSocket(Object obj,String
host,int port,String servlet,String protocol){
int rt=0;
try{
java.io.ByteArrayOutputStream baos = new
java.io.ByteArrayOutputStream();
java.io.ObjectOutputStream oos = new
java.io.ObjectOutputStream(baos);
oos.writeObject(obj);
oos.flush();
oos.close();
byte b[] = baos.toByteArray();

java.net.Socket sock=new java.net.Socket(host,port);
java.io.OutputStream outp=sock.getOutputStream();
java.io.DataOutputStream dataout=new java.io.DataOutputStream(outp);
// MON SOUCIS DOIT ETRE DANS LA chaine "servlet" contenant un nom de
fichier qui à des blancs.

dataout.writeBytes("POST "+servlet+" HTTP/1.1rn");
dataout.writeBytes("Host: "+host+":"+port+"rn");
dataout.writeBytes("Content-type: application/octet-streamrn");
dataout.writeBytes("Content-length:"+" "+b.length+"rn");
dataout.writeBytes("rn");
//post data
dataout.write(b);
//lire la reponse
java.io.InputStream inp=sock.getInputStream();
java.io.DataInputStream datain=new java.io.DataInputStream(inp);
try{
rtÚtain.readInt();
}
catch(Exception e1){
e1.printStackTrace();
}
datain.close();
inp.close();
dataout.close();
outp.close();
sock.close();
baos.close();
}
catch(Exception e){
System.out.println("Erreur "+e.getMessage());
e.printStackTrace();
}
return rt;
}



Salut,

Normalement, une URL ne peut pas contenir d'espaces. Il faut que tu les
encodes, par exemple en les remplaçant par %20.

Regarde par exemple comment sont encodées les URLs sur Wikipedia.

A+

--

Eraser Head

---------------------------------------------------------------
[...] même si tu comprends pas ce que je dis, tu le comprends
(Jean-Claude Van Damme)
---------------------------------------------------------------

phil89
Le #6660291
Bonjour

J'ai resoulu le pb avec la valeur hexa des caractères
cadeus
Le #17346401
phil89 a écrit le 19/05/2008 à 17h17 :
Bonjour

J'ai resoulu le pb avec la valeur hexa des caractères


Salut,

j'ai le même problème que toi actuellement, mes requetes ne passent pas...
pourrais tu être plus précis sur la résolution du problème?
phil89
Le #17348401
Bonsoir

J'ai remplace les blancs par des %20 dans les chaines avant de faire
la requete
Publicité
Poster une réponse
Anonyme