2012-04-24 120 views
2

因此,我正在使用imgur api示例之一上传图片,但我坚持如何检索上传链接以查看图片。在通过java上传图片后检索imgur上传链接

这是我迄今为止,从我可以告诉它上传它,但它本身没有得到一个链接到上传不是很有用。

这是我到目前为止。

String IMGUR_POST_URI = "http://api.imgur.com/2/upload.xml"; 
    String IMGUR_API_KEY = "MY API KEY"; 

    String file = "C:\\Users\\Shane\\Pictures\\Misc\\001.JPG"; 
    try 
    { 
     // Creates Byte Array from picture 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     System.out.println("Writing image..."); 
     ImageIO.write(getBufferedImageFromImage(Toolkit.getDefaultToolkit().createImage(file)), "png", baos); 
     URL url = new URL(IMGUR_POST_URI); 
     System.out.println("Encoding..."); 
     //encodes picture with Base64 and inserts api key 
     String data = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(Base64.encodeBase64String(baos.toByteArray()).toString(), "UTF-8"); 
     data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(IMGUR_API_KEY, "UTF-8"); 
     System.out.println("Connecting..."); 
     // opens connection and sends data 
     URLConnection conn = url.openConnection(); 
     conn.setDoOutput(true); 
     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
     System.out.println("Sending data..."); 
     wr.write(data); 
     wr.flush(); 
    } 
    catch(Exception e){e.printStackTrace();} 

回答

1

根据imgur文档,您应该找回带有对上传的“响应”的xml或json。

我发现了这个小代码片段,它是在写入URL连接之后获取响应的示例,也许它会对您有所帮助。这不是特定于imgur,但我认为代码应该类似。

public static void main(String[] args) throws Exception { 

    String stringToReverse = URLEncoder.encode(args[1], "UTF-8"); 

    URL url = new URL(args[0]); 
    URLConnection connection = url.openConnection(); 
    connection.setDoOutput(true); 

    OutputStreamWriter out = new OutputStreamWriter(
            connection.getOutputStream()); 
    out.write("string=" + stringToReverse); 
    out.close(); 

    BufferedReader in = new BufferedReader(
           new InputStreamReader(
           connection.getInputStream())); 
    String decodedString; 
    while ((decodedString = in.readLine()) != null) { 
     System.out.println(decodedString); 
    } 
    in.close(); 
} 
+0

Thanks!这解决了它!现在做一些有趣的旧正则表达式建设。 – ShaneIsrael 2012-04-24 23:37:42