Me gustaría construir una solicitud multiparte, con los siguientes parámetros: nombre (cadena), correo electrónico (cadena) y carga de archivo (archivo). Estoy usando el código de Java a continuación (trabajando en Android).Ayuda para construir una solicitud POST con MultipartEntity (pregunta de novato)
El httppost.getRequestLine() imprime
POST http://www.myurl.com/upload HTTP/1.1
Así que todo se ve bien en el sitio del cliente, pero mi servidor (Django/Apache) se lee como una petición GET, sin parámetros GET - request.method
produce ' GET ', request.GET.items()
produce un diccionario vacío.
¿Qué estoy haciendo mal? En realidad, no sé cómo configurar correctamente los parámetros multiparte, estoy usando conjeturas, por lo que es posible que ese sea el problema.
public void SendMultipartFile() {
Log.e(LOG_TAG, "SendMultipartFile");
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.myurl.com/upload");
File file = new File(Environment.getExternalStorageDirectory(),
"video.3gp");
Log.e(LOG_TAG, "setting up multipart entity");
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file);
mpEntity.addPart("fileupload", cbFile);
Log.i("SendLargeFile", "file length = " + file.length());
try {
mpEntity.addPart("name", new StringBody(name));
mpEntity.addPart("email", new StringBody(email));;
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
Log.e(LOG_TAG, "UnsupportedEncodingException");
e1.printStackTrace();
}
httppost.setEntity(mpEntity);
Log.e(LOG_TAG, "executing request " + httppost.getRequestLine());
HttpResponse response;
try {
Log.e(LOG_TAG, "about to execute");
response = httpclient.execute(httppost);
Log.e(LOG_TAG, "executed");
HttpEntity resEntity = response.getEntity();
Log.e(LOG_TAG, response.getStatusLine().toString());
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity));
}
if (resEntity != null) {
resEntity.consumeContent();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
favor, eche un vistazo a esta pregunta respondida anteriormente http://stackoverflow.com/questions/2017414/post-multipart-request-with-android-sdk – Omie