-
3 pièce(s) jointe(s)
upload http + php
Bonjour à tous, je développe une application Java J2ME dont le but est d'envoyer le contenu d'une image
depuis le système de fichier d'un téléphone vers un serveur apache, via HTTP en mode POST.
La récupération des données du fichier est faite grâce à l'api du JSR 75, par le biais de la classe FileConnection.
Le code de récupération du fichier sur le serveur est écrit en PHP.
Nous sommes en réalité 2 à travailler sur cette opération, mon collègue travaillant sur la partie réception des donnée en PHP.
Du coté de l'émulateur, tout se passe comme si l'upload fonctionnait..
j'ai bien la réponse "OK" en appelant HttpConnection::getResponseMessage() après la fermeture de la connexion http.
Du coté du serveur, aucune donnée ne semble avoir été transmise..
Le server est en apache 2.0 sous php 4.4. Il n'est pas possible de passer à une version 5.
Le programme fonctionne normalement avec une image uploadée depuis un formulaire d'un navigateur web mais ne reçoit rien à partir de l'émulateur.
Vous pourrez trouver en pièce jointe, le code Java (Upload.java), le code PHP (upload.php) et un extrait des logs du serveur Apache (log.txt) illustrant mon problème.
Est-ce que quelqu'un a t-il déja rencontré ce genre de problème ?
Est-ce qu'il faut extraire, en Java, le "Content-Type" en argument de la méthode, afin de pouvoir adapter en fonction du type du fichier..
(comme mettre "image/jpeg" pour une image dans le cas présent) ?
L'algo est-il maladroit ? faut-il ajouter ou supprimer des "RequestProperties" ?
Merci pour votre aide.
-
J'ai regardé ton code (juste la partie Java) rapidement, et je n'ai pas vu de problème flagrant.
As tu essayé de le faire fonctionner sur un vrai mobile ? Car j'ai déjà eu le problème et suivant le fabriquant les implémentations ne sont pas forcément standard. Par exemple Samsung oblige à rajouter des en-têtes spécifiques. Chez Nokia, ils implémentent la norme HTTP parfaitement sur les s40.
Sinon, pour débugger, mets un sniffer sur ton serveur apache et tu verras toutes les trames qui passent.
-
Bonjour, merci pour votre réponse !
Alors pour l'instant, j'ai testé l'application sur 4 constructeurs : Nokia s40, Samsung,
Sony-Ericsson et LG.
L'Appli plante sur LG et Nokia. Je pense que c'est lié au jsr75 lorsque je fait un
"FileSystemRegistry.listRoots()" qui ne doit pas être accepté par le système d'un point de vue sécurité.. mais cet appel est indispensable à mon applis
(je doit lister l'ensemble des folder du tél contenant des images ).
En fait l'appli demande 15 millions de fois l'authorisation de lire ou d'écrire des données, pour au final planter dans le plus grand silence.. (mais ceci est un autre débat)
Pas de problèmes du coté de Samsung et Sony-Ericsson concernant le déroulement
de l'appli.. (en fait je fait la majorité de mes tests sur Sony Ericsson).
En revanche, l'étape de l'upload sur SE génère une levée d'exception dont le message
est un truc du genre : "8000089"
Mon collègue est en train de travailler sur le snifer. je vous tiens au courant !
-
Est-ce que tu fais bien tes upload dans des threads séparés ?
-
Pour les exceptions de sécurité, il faut que tu signes tes midlets avec un certificat code signing.
-
2 pièce(s) jointe(s)
Bon.. finalement je viens de résoudre moi-même mon problème..
Je vais donc poster mon code et mettre cette discussion dans la case "résolu"
Je me suis inspiré d'une routine trouvée sur un forum nokia.
Mon code l'adapte de manière à traiter directement l'envoi de fichier.
Sinon oui je fais bien mes upload dans des thread séparés.
Concernant les exceptions de sécurité, j'ai quelques incohérences lorsque je signe
en opérateur sur nokia par exemple: "invalid application", mais je vais essayer en Third-party..
Merci à tous ! :)