Rechercher : dans
Par :

Problème java C# Web service

Dernière réponse le 8 fév 2008 à 14:09:32 goulamass, le 7 fév 2008 à 10:36:58 
 Signaler ce message aux modérateurs

Bonjour,
Je suis en train de développer une application ayant les contraintes suivantes.

Client en java et Web service en C#

Mon problème est que je ne peux envoyer que des stings vers le web service (WS).

Voulant transmettre une image voici ma démarche :

Sur le client je transforme l'image en tableau de byte puis en string.

Sur le WS je récupère le string et le reconvertit en image.

Evidemment cela ne fonctionne pas.

Donc la partie client transformant en byte[] puis en String :

Image img;

int byteLu;
InputStream in;

String fich = "";

StringBuffer buffer = new StringBuffer();

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int j = 0;
try
{
//La ligne suivante est spécifique puisque je dév pour déployer sur Blackberry par la suite
FileConnection fconn = (FileConnection)Connector.open(path);

//Je vérifie que le fichier existe
if(fconn.exists())
{
//Me permet de récupérer un InputStream ( je peux aussi avoir un Out , DataIn , DataOut...)
in = fconn.openInputStream();

//Je parcours et remplis le ByteArrayOutputStream
while((j=in.read())!=-1)
{
baos.write(j);
}
// Je mets le tout dans mon tableau de byte
fic = baos.toByteArray();

//Boucle me permettant de parcourir le tableau et de stocker dans un StringBuffer
for(int i=0; i<fic.length; i++)
{
buffer.append(Integer.toHexString(fic[i]));
}
//Enfin je copie le StringBuffer dans un String
fich = buffer.toString().toUpperCase();

}
//Je ferme la connection au fichier
fconn.close();
}


Voici la parti WS :

//Avec comme paramètre : fichier étant le string contenant le tableau de byte transformé sur le client.
//Les trois autres para e me posent aucun pb puisque ne sont que des strings.

public string TOTO(string fichier , string latitude , string longitude , string commentaire)
{

String nomimgjpg = @"D:\Projets .NET 2005\WebService\WS_BLACKBERRY\toto.jpeg ";
String nomimgtxt =@"D:\Projets .NET 2005\WebService\WS_BLACKBERRY\toto.txt";
MemoryStream ms;
Image img;
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] tab = encoding.GetBytes(fichier);

ms = new MemoryStream(tab);

img = Image.FromStream(ms);

try
{
//Je sais que l'erreur se situe ici
img.Save(nomimgjpg,System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ex)
{
return "ERR: "+ex.Message;
//return "ca marche pas";
}

System.IO.StreamWriter BW = new StreamWriter(new FileStream(nomimgtxt, FileMode.Create, FileAccess.Write));
BW.WriteLine("Chaine caract :" + fichier);
BW.WriteLine("GPS latitude :" + latitude);
BW.WriteLine("GPS longitude :" + longitude);
BW.WriteLine("Commentaire :" + commentaire);
BW.Close();

return nomimgjpg;
}


Je connais déjà pas trop le C#.
Je sais que mon WS fonctionne puique les autres paramètres ne rencontrent aucun pb et sont bien sauvés dans le fichier txt.

Alors soit ma conversion n'est pas bonne (client) soit ma récupération et reconstruction ne l'est pas.

Petit détail : l'image récupérée est au format jpg (format blackberry).Peut-être le pb vient de là aussi.
Autre chose lorsque je récupère le string fichier tel quel il me donne FFFFFFFFFFFFFFD8F... (je mets bien sûr pas tout).

Merci par avance

Configuration: Windows XP
Firefox 2.0.0.11

Meilleures réponses pour « Problème java C# Web service » dans :
OpenOffice.org est écrit en Java VoirMythe La suite bureautique OpenOffice.org est écrite en Java. C'est pour cela qu'elle est lente. Réalité FAUX Explications OpenOffice.org est écrit en C++. Pas convaincu ? Alors supprimez totalement Java (JRE/JVM/JDK) de votre ordinateur...
Web Services VoirAvec l'interconnexion des ordinateurs en réseau et en particulier à travers internet, il devient possible de faire fonctionner des applications sur des machines distantes. L'intérêt d'une application fonctionnant à distance peut à première vue...
WSDL VoirWSDL Le standard WSDL (Web Service Description Language) est un langage reposant sur la notation XML permettant de décrire les services web. WSDL permet ainsi de décrire l'emplacement du service web ainsi que les opérations (méthodes, paramètres et...
Java - Les packages VoirIntroduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...

1

 goulamass, le 8 fév 2008 à 14:09:32

Problème résolu.

Je transforme sur mon client mon image en tableau de byte puis en tableau d'Int.

J'envoi les Int sous forme de string en intercalant entre chaque int le caractère " ;".

Du côté serveur je récupère le string que je splitte en tableau de string sur ce même caractère.

Enfin je le transforme en Int que je cast en byte dans un tableau de byte.

Tableau qui est enregistré tel quel et qui restitue l'image.

Répondre à goulamass