Error de devolución de HttpPost al utilizar MultipartEntityBuilder en Android

Estoy intentando consultar ” http://www.idmypill.com/api/id/ ” api y la cadena JSON que estoy recibiendo de vuelta es {"results":[],"success":false,"errors":null} Esta es mi clase de manejador de servicios:

 public String makeServiceCall(String url, int method, String api, byte[] pillImage) { try { // http client DefaultHttpClient httpClient = new DefaultHttpClient(); HttpEntity httpEntity = null; HttpResponse httpResponse = null; // Checking http request method type if (method == POST) { android.os.Debug.waitForDebugger(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("data = api_key", api); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addBinaryBody("files = image", pillImage); entity = builder.build(); Log.d("Entity", entity.toString()); httpPost.setEntity(entity); Log.d("post", httpPost.toString()); httpResponse = httpClient.execute(httpPost); Log.d("params", httpResponse.getParams().toString()); } httpEntity = httpResponse.getEntity(); response = EntityUtils.toString(httpEntity); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return response; } 

El ejemplo de python que da el sitio web es:

 # highly suggested to use the requests package # http://www.python-requests.org/en/latest/ import requests # read in the image and construct the payload image = open("example.jpg").read() data = {"api_key": "KH8hdoai0wrjB0LyeA3EMu5n4icwyOQo"} files = {"image": open("example.jpg")} # fire off the request r = requests.post("http://www.idmypill.com/api/id/", data = data, files = files) # contents will be returned as a JSON string print r.content 

De alguna manera, mi formato de publicación debe ser incorrecto o ¿es posible que deseen específicamente una imagen .jpg en lugar de una matriz de bytes? No estoy familiarizado con Python y he estado luchando con este problema durante más de una semana por lo que cualquier ayuda sería muy apreciada.

builder.addPart (“archivo”, nuevo FileBody (nuevo archivo (nombre de archivo)));

Intente esto en lugar de usar un objeto de archivo con addPart

Tratar:

  ... MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("api_key", api); builder.addPart("image", pillImage); ... 

Si addPart no funciona con una matriz de bytes (estoy en el trabajo, no puedo hacer la prueba), tomar el nombre del archivo de imagen y hacerlo definitivamente funcionará:

  ... pillImage = "/path/to/the/image.jpg"; //This is the image file name MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("api_key", api); File imageFile = new File(pillImage); //Open the image builder.addPart("image", imageFile); ...