J2ME connection HTTP - Java - Programmation
Marsh Posté le 27-04-2006 à 21:00:37
arrau: n'imp.
jess100: flush()
Marsh Posté le 30-04-2006 à 13:19:20
normalement t'a pas besoin d'appeler le toString pour imprimer. le probleme ne vient pas de la mais bon. essaye d'utiliser un String au lieu de StringBuffer
Marsh Posté le 09-05-2006 à 16:34:26
Code :
|
Hummm, le header Content-length est sensé être égal à la taille totale du corps de la requette donc le set doit être à l'extérieur de la boucle.
Marsh Posté le 27-04-2006 à 18:01:16
Bonjour à tous!
Voila je dois développer une appli qui récupère des informations à aprtir d'enregistrements sur le téléphone et les envoie à une servlet. J'ai choisi d'utiliser une connection Http. Voici la fonction de ma midlet qui fait la connection avec le serveur :
public void envoiCartesPost(List l){
HttpConnection c = null;
DataOutputStream d = null;
DataInputStream in = null;
TextBox myTextBox = null;
StringBuffer buff = new StringBuffer();
try{
c = (HttpConnection)Connector.open(urlServlet,Connector.READ_WRITE);
c.setRequestMethod(HttpConnection.POST);
System.out.println("connection" );
c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0" );
c.setRequestProperty("Content-Language", "en-US" );
c.setRequestProperty( "Accept", "application/octet-stream" );
c.setRequestProperty( "Connection", "close" );
Card[] cards = manager.getCards();
byte postmsg[];
int j;
for (int i=0;i<l.size();i++){
if(l.isSelected(i)){
postmsg = (cards[i].getCardID()).getBytes();
c.setRequestProperty("Content-Length", Integer.toString(postmsg.length));
d = c.openDataOutputStream();
for (j=0;j<postmsg.length;j++){
d.write(postmsg[j]);
}
}
}
d.flush();
in = c.openDataInputStream();
int car;
while ((car=in.read()) != -1){
buff.append((char)car);
System.out.println((char)car);
}
myTextBox = new TextBox("Contenu:",buff.toString(),1024,0);
if (in != null) in.close();
if (d != null) d.close();
if (c != null) c.close();
display.setCurrent(l);
}
catch (IOException ioe){
display.setCurrent(new Alert("", "Connection au serveur impossible", null, AlertType.WARNING), getDisplayList());
}
}
Et voici la servlet :
public class PiBiServlet extends HttpServlet {
/** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
DataInputStream dis = new DataInputStream(request.getInputStream());
StringBuffer b = new StringBuffer();
int ch;
while ((ch = dis.read()) != -1) {
b.append((char)ch);
}
System.out.println(b.capacity());
System.out.println(b.toString());
response.setContentType("text/html" );
PrintWriter myOutPut = response.getWriter();
myOutPut.println("message"+b.toString());
myOutPut.close();
}
La chaine b.toString() ne s'affiche pas. Pourtant il semble que les données sont bien récupérées puisque je peux afficher le résultat sur la console.
Pouvez-vous m'aider??
Merci d'avance.