J'ai peut-être tort sur ce sujet, mais je pense que vous devez mettre en place votre propre com.android.le volley.boîte à outils.HttpStack pour cela, car la valeur par défaut (HurlStack si la version > pain d'épice ou HttpClientStack) ne pas traiter avec des " multipart/form-data.
Edit:
Et en effet je me suis trompé. J'ai été en mesure de le faire à l'aide de MultipartEntity dans la Requête comme ceci:
public class MultipartRequest extends Request<String> {
private MultipartEntity entity = new MultipartEntity();
private static final String FILE_PART_NAME = "file";
private static final String STRING_PART_NAME = "text";
private final Response.Listener<String> mListener;
private final File mFilePart;
private final String mStringPart;
public MultipartRequest(String url, Response.ErrorListener errorListener, Response.Listener<String> listener, File file, String stringPart)
{
super(Method.POST, url, errorListener);
mListener = listener;
mFilePart = file;
mStringPart = stringPart;
buildMultipartEntity();
}
private void buildMultipartEntity()
{
entity.addPart(FILE_PART_NAME, new FileBody(mFilePart));
try
{
entity.addPart(STRING_PART_NAME, new StringBody(mStringPart));
}
catch (UnsupportedEncodingException e)
{
VolleyLog.e("UnsupportedEncodingException");
}
}
@Override
public String getBodyContentType()
{
return entity.getContentType().getValue();
}
@Override
public byte[] getBody() throws AuthFailureError
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try
{
entity.writeTo(bos);
}
catch (IOException e)
{
VolleyLog.e("IOException writing to ByteArrayOutputStream");
}
return bos.toByteArray();
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response)
{
return Response.success("Uploaded", getCacheEntry());
}
@Override
protected void deliverResponse(String response)
{
mListener.onResponse(response);
}
}
C'est assez cru, mais je l'ai essayé avec une image et une chaîne simple et ça fonctionne. La réponse est un espace réservé, ne pas faire beaucoup de sens pour retourner une Chaîne de Réponse dans ce cas. J'ai eu des problèmes à l'aide d'apache httpmime à utiliser MultipartEntity j'ai donc utilisé cette https://code.google.com/p/httpclientandroidlib/ ne sais pas si il ya une meilleure façon.
Espérons que cela aide.
Modifier
Vous pouvez utiliser httpmime sans l'aide de httpclientandroidlib, la seule dépendance est httpcore.