2011-08-19 24 views
5

पर होस्ट करने के लिए एक फोटो अपलोड करना मैंने imgur के माध्यम से एक लिंक अपलोड करने और पुनर्प्राप्त करने के लिए विभिन्न विधियों का प्रयास किया है, लेकिन imgur api को देखने के बावजूद कोई भी सफल नहीं हुआ है। http://api.imgur.com/examples#uploading_javaएंड्रॉइड, प्रोग्रामिंग

लेकिन निम्न विधियों में आंशिक रूप से काम करता है .. im पुनः प्राप्त करने,

त्रुटियों की कोशिश कर रहा: यदि कोई त्रुटियां हुईं। छवि के लिए लिंक:

: छवि

की मेजबानी की लेकिन मैं केवल के साथ "लिंक हटाते" हैं, के रूप में दूसरों रिक्त हैं, यह बाहर की जाँच खत्म हटाने के लिए लिंक: छवि के लिए लिंक हटाना लिंक की मेजबानी की

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

सभी मैं अंत में वापस मिल ही हटाने के लिंक के साथ एक hashmap mImageResponse ...

किसी भी विचार क्या im पर गलत कर?

+0

इस को ठीक केवल था के लिए URL बदलने के लिए: http://imgur.com/ api/upload.xml – asd2005

+0

आपने किस लाइब्रेरी का उपयोग किया था? – emesx

+0

मुझे पता है कि यह साल पुराना है, लेकिन मुझे एक कक्षा मिल रही है जिसे फाइलबॉडी के लिए अपवाद नहीं मिला है। आपने उस वर्ग को कहां से आयात किया? – PeteH

उत्तर

2

इस को ठीक केवल था करने के लिए यूआरएल को बदलने के लिए: imgur.com/api/upload.xml

+0

मैं एक एंड्रॉइड ऐप खोज रहा हूं जो हटाए गए क्षमता के साथ अनाम अपलोड को अनुमति देता है। किसी भी मौके से आप इस सवाल के समय ऐसे ऐप का विकास कर रहे थे, और यदि हां, तो क्या यह प्ले स्टोर पर उपलब्ध है? मैंने आधे दर्जन ऐप्स की कोशिश की है लेकिन किसी ने भी एक बार अपलोड करने के बाद एक डिलीट लिंक नहीं दिया है! :-(धन्यवाद! –