2012-07-24 14 views
12

sto suppongo di inviare canzone di file (MP3/WAV) e alcuni dati attraverso il servizio web riposante sicuro. Sto usando MultipartEntity per fare la richiesta HttpPost. ma quando ho eseguito attraverso HttpClient, il server risponde questo erroreerrore Android: MultipartEntity, richiesta inviata dal cliente era sintatticamente corretta

stato HTTP 400 - Bad Request Tipo: Rapporto sullo stato messaggio: Bad Request La richiesta inviata dal cliente era sintatticamente corretta (Bad Request).

Ma il servizio sta facendo molto bene, se lo chiamiamo dalla sua interfaccia web. si prega di aiutare

suo codice

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost postRequest = new HttpPost(); 
     try { 
      MultipartEntity reqEntity = new MultipartEntity(); 

      reqEntity.addPart("email", new StringBody("[email protected]")); 
      reqEntity.addPart("password", new StringBody("123")); 
      reqEntity.addPart("title", new StringBody("My new song")); 
      reqEntity.addPart("musicData", new FileBody(new File(FilePath))); 

      // FIlePath is path to file and contains correct file location 

      postRequest.setEntity(reqEntity); 

      postRequest.setURI(new URI(ServiceURL)); 
      HttpResponse response = httpclient.execute(postRequest); 

     } catch (URISyntaxException e) { 
      Log.e("URISyntaxException", e.toString()); 
     } 

ho incluso anche apache-mime4j, HttpClient, httpcore e httpmime vasetti per MultipartEntity.

Questo è uno snap di pagina HTML per il servizio. enter image description here

+0

Sei sicuro che l'autenticazione funzioni? – Mark

+0

sì ..... è – Azhar

+0

Puoi pubblicare anche il tuo URL di mappatura nel tuo servizio web? Potrebbe essere che la tua richiesta di URL sia diversa da quella che hai mappato. – tolgap

risposta

5

Provare a rimuovere il metodo setURI e passando l'URL in cui si crea il HttpPost dell'oggetto, come segue. Questo ha funzionato per me (more here).

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost postRequest = new HttpPost(ServiceURL); 
try { 
    MultipartEntity reqEntity = new MultipartEntity(); 

    reqEntity.addPart("email", new StringBody("[email protected]")); 
    reqEntity.addPart("password", new StringBody("123")); 
    reqEntity.addPart("title", new StringBody("My new song")); 
    reqEntity.addPart("musicData", new FileBody(new File(FilePath)));  
    postRequest.setEntity(reqEntity); 

    HttpResponse response = httpclient.execute(postRequest); 

} catch (URISyntaxException e) { 
    Log.e("URISyntaxException", e.toString()); 
} 
+0

basta accettarlo perché il tempo di taglia è finito e che noi abbiamo un po 'come soluzione vicina ma il problema è ancora lì :( – Azhar

2

Non sprecare il tuo tempo provando diverse combinations.There diversi sono alcuni strumenti di richiesta HTTP disponibili per HTTP con la quale è possibile tenere traccia di richiesta e risposta si è getting.Ex. HTTP Analyzer download di prova versione

chiamata URL dalla tua interfaccia web di lavoro, copia richiesta e risposta poi fare lo stesso con dal programma lo strumento è enogh in grado di catturare la vostra richiesta e di risposta dei dati.

Confrontiamo ora di lavoro e richiesta di lavoro non si sarà sicuramente in grado di dignose la questione se possa essere questione di testa o qualche problema di autenticazione legati.