2011-08-19 27 views
5

Tôi đã thử các phương pháp khác nhau để tải lên và truy xuất liên kết qua imgur nhưng không có ảnh nào thành công mặc dù đang xem api tuyệt vời. http://api.imgur.com/examples#uploading_javaAndroid, tải lên ảnh để lưu trữ trên imgur theo chương trình

Nhưng các phương pháp sau phần trình .. im cố gắng để lấy,

lỗi: nếu có lỗi xảy ra. liên kết đến hình ảnh: liên kết đến hình ảnh tổ chức link delete: liên kết để xóa các hình ảnh đã tổ chức

Nhưng tôi chỉ kết thúc với "xóa liên kết", như những người khác đang trống, 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; 
    } 

Tất cả tôi nhận được trở lại cuối cùng là một mImageResponse hashmap với chỉ liên kết xóa ...

bất kỳ ý tưởng về những gì im làm sai?

+0

Việc sửa chữa này chỉ đơn thuần là để thay đổi URL tới: http://imgur.com/ api/upload.xml – asd2005

+0

Bạn đã sử dụng thư viện nào? – emesx

+0

Tôi biết đây là năm cũ nhưng tôi nhận được một lớp học không được tìm thấy ngoại lệ cho FileBody. Bạn đã nhập lớp đó từ đâu? – PeteH

Trả lời

2

Việc sửa chữa này chỉ đơn thuần là thay đổi địa chỉ URL: imgur.com/api/upload.xml

+0

Tôi đang tìm kiếm một ứng dụng Android cho phép tải lên ẩn danh với khả năng xóa. Có khả năng bạn đang phát triển một ứng dụng như vậy tại thời điểm câu hỏi này, và nếu có, nó có sẵn trên cửa hàng chơi không? Tôi đã thử một nửa tá ứng dụng nhưng không có ứng dụng nào cung cấp liên kết xóa sau khi tải lên một cách đồng nhất! :-(cảm ơn! –

Các vấn đề liên quan