5

I have tried different methods to upload and retrieve a link via imgur but none have been successfull despite looking at the imgur api. http://api.imgur.com/examples#uploading_java

But the following methods partly works.. im trying to retrieve,

errors: if any errors occured. link to image: the link to the image hosted delete link: the link to delete the image hosted

But i only end up with the "delete link", as the others are blank, check it out:

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;
    }

All i get back in the end is a hashmap mImageResponse with only the delete link...

any ideas on what im doing wrong?

asd2005
  • 315
  • 2
  • 5
  • 12
  • The fix to this was merely to change the URL to: http://imgur.com/api/upload.xml – asd2005 Aug 19 '11 at 16:38
  • I know this is year's old but I'm getting a class not found exception for FileBody. Where did you import that class from? – PeteH Sep 28 '13 at 22:50

1 Answers1

2

The fix to this was merely to change the URL to: imgur.com/api/upload.xml

asd2005
  • 315
  • 2
  • 5
  • 12
  • I'm searching for an android app that allows anonymous upload with delete ability. By any chance were you developing such an app at the time of this question, and if yes, is it available on play store? I've tried half a dozen apps but none gave a delete link after uploading anonimously! :-( thanks! – Costin Gușă Jan 13 '14 at 15:38