2010-08-10 6 views
1

Je veux télécharger une image dans un simulateur de Blackberry en utilisant MultipartPostData, ce qui suit est mon code, mais cela ne semble pas fonctionner. J'ai également signé mon fichier .cod. Quelqu'un peut-il m'aider s'il-vous-plaît?Télécharger l'image en utilisant blackberry

public void postData(String Url, bytes[] data) 
{ 
if (DeviceInfo.isSimulator()){ 
Url=Url+";deviceSide=true"; 
} 
HttpConnection httpConn=null; 
OutputStream os=null; 
InputStream is=null; 
String url=Url; 
try { 
    PostData form = new MultipartPostData(MultipartPostData.DEFAULT_CHARSET, false) ; 
    byte [] postData = data; 
form.setData(postData); 

     httpConn = (HttpConnection) Connector.open(url); 
     httpConn.setRequestMethod(HttpConnection.POST); 
    httpConn.setRequestProperty("User-Agent", "BlackBerry"); 
    httpConn.setRequestProperty("Content-Type", "multipart/form-data"); 
    httpConn.setRequestProperty("MIME-Type", "Image/Jpeg"); 
     httpConn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH, String.valueOf(postData.length)); 
     httpConn.setRequestProperty("Content-Language", "en-US"); 

     os =httpConn.openOutputStream(); 
     os.write(form.getBytes()); 

    //read response 
    StringBuffer sb = new StringBuffer(); 
    is = httpConn.openDataInputStream(); 
    int chr; 
    while ((chr = is.read()) != -1) 
     sb.append((char) chr); 

    System.out.println("Result................................ " + sb.toString()); 
    String result=sb.toString(); 
} 
catch(Exception e) 
{ 
    System.out.println(e.toString()); 
} 
finally { 
    try{ 
     if(is!= null) 
      is.close(); 
     if(os != null) 
      os.close(); 
if(httpConn != null) 
httpConn.close(); 
} catch(Exception e1){ 
     System.out.println(e1.toString()); 
    } 
    } 
} 
+0

Une erreur HTTP? –

+0

pas d'erreur http du tout – Achal

+0

En fait, MultipartPostData devrait construire les données de poste avec la ligne et les lignes "Content-Disposition". Avez-vous trouvé un moyen d'exécuter votre demande? J'essaye de faire la même chose et ne peux pas passer n'importe quelles données au serveur (le serveur voit seulement une rangée vide de données dans la poste). – obo

Répondre

2

// vous devez avoir des données post format bundary, le fichier .cod doit être un travail sur le simulateur

httpConn = (HttpConnection)connDesc.getConnection(); 
       httpConn.setRequestMethod(HttpConnection.POST);   
    httpConn.setRequestProperty("user-agent", "BlackBerry");  
    httpConn.setRequestProperty("content-type", "multipart/form-data; boundary=----------V2ymHFg03ehbqgZCaKO6jy"); 

      os = httpConn.openOutputStream(); 
      //os.write(form.getBytes()); 

      byte[] fileBytes = {1,2,3,4}; //retrieve file bytes with your own code     

      ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

      bos.write(("\r\n--" + "----------V2ymHFg03ehbqgZCaKO6jy" + "\r\n").getBytes()); 
     bos.write(("Content-Disposition: form-data; name=\"mifoto\"; filename=\"leo.gif\"\r\n").getBytes()); 
     bos.write(("Content-Type: image/gif\r\n\r\n").getBytes()); 
      bos.write(fileBytes); 
     bos.write(("\r\n--" + "----------V2ymHFg03ehbqgZCaKO6jy" + "--\r\n").getBytes()); 

      os.write(bos.toByteArray()); 
1

Dès que vous appelez MultipartPostData.setData(), elle remplace les données Content-Disposition vous s'établi avec MultipartPostData.append().

la réponse de leonel fonctionne ou vous pouvez utiliser la classe ClientHttpRequest de Vlad Patryshev.

Questions connexes