2012-07-24 12 views
12

Supongo que debo enviar archivos de canciones (mp3/wav) y algunos datos a través de un servicio web seguro y reparador. Estoy usando MultipartEntity para hacer la solicitud de HttpPost. pero cuando lo ejecuto a través HttpClient, el servidor responde este errorError de Android: MultipartEntity, la solicitud enviada por el cliente fue sintácticamente incorrecta

de estado HTTP 400 - Solicitud incorrecta Tipo: Informe de situación mensaje: Solicitud incorrecta La solicitud enviada por el cliente era sintácticamente incorrecta (Bad Request).

Pero el servicio está funcionando muy bien si lo llamamos desde su interfaz web. por favor ayuda

su código

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()); 
     } 

También incluí Apache-mime4j, httpclient, httpcore y httpmime frascos para MultipartEntity.

Esta es una combinación de la página HTML del Servicio. enter image description here

+0

¿Estás seguro de que la autenticación funciona? – Mark

+0

sí ..... es – Azhar

+0

¿Puede publicar su URL de mapeo también en su servicio web? Podría ser que su solicitud de URL sea diferente a la que ha asignado. – tolgap

Respuesta

5

Intente eliminar el método setURI y pasar la URL cuando cree su objeto HttpPost, de la siguiente manera. Esto funcionó para mí (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

simplemente acéptelo porque el tiempo de recompensa ha terminado y que estamos cerca de la solución, pero el problema sigue ahí :( – Azhar

2

No malgastes tu tiempo tratando diferentes combinations.There diferentes son algunas de las herramientas disponibles para HTTP Request HTTP con el que puede realizar un seguimiento de solicitud y respuesta son getting.Ex. Versión de prueba de descarga del analizador HTTP

URL de llamada desde su interfaz web de trabajo, solicitud de copia y respuesta luego haga lo mismo con desde el programa la herramienta es capaz de capturar sus datos de solicitud y respuesta.

Ahora compare la solicitud de trabajo y no de trabajo seguramente podrá dignarse el problema ya sea que se trate de un problema de encabezado o de algún problema relacionado con la autenticación.

Cuestiones relacionadas