Descarga de archivos de Android mediante HTTP PUT

Tengo un servicio de la tela que requiere que yo envíe los datos del archivo a la URL del HTTP con la petición de PUT. Sé cómo hacerlo, pero en Android no lo sé.

El documento API da una solicitud de ejemplo.

PUT /images/upload/image_title HTTP/1.1 Host: some.domain.com Date: Thu, 17 Jul 2008 14:56:34 GMT X-SE-Client: test-account X-SE-Accept: xml X-SE-Auth: 90a6d325e982f764f86a7e248edf6a660d4ee833 bytes data goes here 

He escrito algún código, pero me da error.

 HttpClient httpclient = new DefaultHttpClient(); HttpPut request = new HttpPut(Host + "images/upload/" + Name + "/"); request.addHeader("Date", now); request.addHeader("X-SE-Client", X_SE_Client); request.addHeader("X-SE-Accept", X_SE_Accept); request.addHeader("X-SE-Auth", Token); request.addHeader("X-SE-User", X_SE_User); // I feel here is something wrong File f = new File(Path); MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE); entity.addPart("photo", new FileBody(f)); request.setEntity(entity); HttpResponse response = httpclient.execute(request); HttpEntity resEntityGet = response.getEntity(); String res = EntityUtils.toString(resEntityGet); 

¿Hay algo mal que estoy haciendo?

probar algo similar a

 try { URL url = new URL(Host + "images/upload/" + Name + "/"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("PUT"); // etc. } catch (Exception e) { //handle the exception !} 

EDIT – otra y mejor opción:

Se recomienda usar el HttpPut – ejemplos ver http://massapi.com/class/org/apache/http/client/methods/HttpPut.java.html

EDIT 2 – según lo solicitado por comentario:

Utilice el método setEntity con, por ejemplo, new FileEntity(new File(Path), "binary/octet-stream"); como parámetro antes de llamar a execute para agregar un archivo a la solicitud PUT.

El código siguiente funciona bien para mí:

 URI uri = new URI(url); HttpClient httpclient = new DefaultHttpClient(); HttpPost post = new HttpPost(uri); File file = new File(filename); MultipartEntity entity = new MultipartEntity(); ContentBody body = new FileBody(file, "image/jpeg"); entity.addPart("userfile", body); post.setEntity(entity); HttpResponse response = httpclient.execute(post); HttpEntity resEntity = response.getEntity(); 
  • Subir varias imágenes al servidor en una cola
  • No se puede tomar el progreso en la carga de archivos POST HTTP (Android)
  • ¿Hay alguna forma de obtener el progreso de subida correctamente con HttpUrlConncetion?
  • Android Studio nunca termina de cargar la aplicación en el Nexus 10
  • Android: Cómo deshabilitar la depuración para subir el apk
  • Picasso para cargar matriz de bytes
  • ¿Cómo grabar un video directamente en Helix Server desde mi dispositivo Android?
  • SingleCursorHandlerTouchEvent -getEditableSupport FASLE error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.