2011-08-19 8 views
5

He intentado con diferentes métodos para cargar y recuperar un enlace a través de imgur, pero ninguno ha sido exitoso a pesar de mirar la api de imgur. http://api.imgur.com/examples#uploading_javaAndroid, cargando una foto al host en imgur programatically

Pero los métodos siguientes obras en parte .. im tratando de recuperar,

errores: si los errores se produjeron. enlace a la imagen: el enlace a la imagen alojada enlace borrar: el enlace para eliminar la imagen alojada

pero sólo terminan con el "Eliminar vínculo", como los otros están en blanco, Hay que ver:

public void post(String path) { 


    List<NameValuePair> postContent = new ArrayList<NameValuePair>(2); 
    postContent.add(new BasicNameValuePair("key", DEV_KEY)); 
    postContent.add(new BasicNameValuePair("image", path)); 


    String url = "http://api.imgur.com/2/upload"; 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpContext localContext = new BasicHttpContext(); 
    HttpPost httpPost = new HttpPost(url); 

    try { 
     MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 

     for(int index=0; index < postContent.size(); index++) { 
      if(postContent.get(index).getName().equalsIgnoreCase("image")) { 
       // If the key equals to "image", we use FileBody to transfer the data 
       entity.addPart(postContent.get(index).getName(), new FileBody(new File (postContent.get(index).getValue()))); 
      } else { 
       // Normal string data 
       entity.addPart(postContent.get(index).getName(), new StringBody(postContent.get(index).getValue())); 
      } 
     } 

     httpPost.setEntity(entity); 

     HttpResponse response = httpClient.execute(httpPost, localContext); 
     mImgurResponse = parseResponse (response); 


     Iterator it = mImgurResponse.entrySet().iterator(); 
     while(it.hasNext()){ 
      HashMap.Entry pairs = (HashMap.Entry)it.next(); 

      Log.i("INFO",pairs.getKey().toString()); 
      if(pairs.getValue()!=null){ 
       reviewEdit.setText(pairs.getValue().toString()); 

      Log.i("INFO",pairs.getValue().toString()); 
      } 
     } 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

private Map<String,String> parseResponse(HttpResponse response) { 
     String xmlResponse = null; 

     try { 
      xmlResponse = EntityUtils.toString(response.getEntity()); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     if (xmlResponse == null) return null; 

     HashMap<String, String> ret = new HashMap<String, String>(); 
     ret.put("error", getXMLElementValue(xmlResponse, "error_msg")); 
     ret.put("delete", getXMLElementValue(xmlResponse, "delete_page")); 
     ret.put("original", getXMLElementValue(xmlResponse, "original_image")); 

     return ret; 
    } 

private String getXMLElementValue(String xml, String elementName) { 
     if (xml.indexOf(elementName) >= 0) 
      return xml.substring(xml.indexOf(elementName) + elementName.length() + 1, 
        xml.lastIndexOf(elementName) - 2); 
     else 
      return null; 
    } 

todo lo que consigo de vuelta al final es un HashMap mImageResponse con sólo el enlace borrar ...

alguna idea de lo que estoy haciendo mal?

+0

La solución a esto no era más que cambiar la URL a: http://imgur.com/ api/upload.xml – asd2005

+0

¿Qué bibliotecas usaste? – emesx

+0

Sé que este es un año pero recibo una excepción de clase no encontrada para FileBody. ¿De dónde importaste esa clase? – PeteH

Respuesta

2

La solución a esto no era más que cambiar la URL a: imgur.com/api/upload.xml

+0

Estoy buscando una aplicación de Android que permita la carga anónima con la capacidad de eliminar. Por casualidad, ¿estaba desarrollando una aplicación de este tipo al momento de esta pregunta y, en caso afirmativo, está disponible en Play Store? ¡He intentado media docena de aplicaciones pero ninguna dio un enlace de eliminación después de subir anónimamente! :-(¡Gracias! –

Cuestiones relacionadas