2013-06-27 90 views
2

所以有這行代碼Imgur API上傳

String data = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(Base64.encodeBase64String(baos.toByteArray()).toString(), "UTF-8"); 

data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(YOUR API KEY GOES HERE, "UTF-8"); 

,當我註冊了Imgur API我被賦予了CLIENT_ID和client_secret,並想知道我使用的一個地方說:「你的API KEY GOES HERE「也在第二行的第一部分中,它說」鑰匙「我在那裏進入什麼?也是該網站上傳它http://imgur.com/api/upload因爲我看到了一些不同的。

回答

1

要上傳到的網站是 - https://api.imgur.com/3/image,或者您也可以使用與「上傳」而不是圖片相同的鏈接。

我目前正在嘗試使用Imgur API自己,雖然我還沒有完全正確的(我似乎無法解析URL響應)我已經看過不少代碼示例。你確定使用API​​的第3版嗎?

因爲API的主頁說你應該以這種格式「授權客戶端ID YOUR_CLIENT_ID」給你的客戶端ID,而不是像你一樣使用「key」。

看一看http://api.imgur.com/

編輯:您可能會發現以下有用的 - Anonymous Uploading File object to Imgur API (JSON) gives Authentication Error 401

+0

我得上載工作(所以我是這麼認爲的),並上傳的鏈接我用(與沒有錯誤提供了我)是http://api.imgur.com/2/upload.xml和http:// imgur。 com/api/upload.xml,但那是我找到的一個關鍵,問題是我也無法解析響應來獲取上傳的鏈接。 – user2526311

+0

啊,我試過了,我找到了一個鑰匙,並在其他地方工作。 –

+0

抱歉沒有意識到按下輸入會添加評論。 你說你給了一個client_id和一個client_secret,它不會與你的代碼一起工作,因爲我認爲你正在使用API​​的第2版。你可以告訴這個,因爲你的上傳網址包含/ 2 /,而我給你看的那個網址有/ 3 /。 第2版的API在您談論時使用了「密鑰」,但是在版本3中,它們將它交換爲使用客戶端ID和客戶端密鑰。他們不再提供「密鑰」,他們不適用於API的第3版。 –

6

嘗試了這一點:

public static String getImgurContent(String clientID) throws Exception { 
    URL url; 
    url = new URL("https://api.imgur.com/3/image"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

    String data = URLEncoder.encode("image", "UTF-8") + "=" 
      + URLEncoder.encode(IMAGE_URL, "UTF-8"); 

    conn.setDoOutput(true); 
    conn.setDoInput(true); 
    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("Authorization", "Client-ID " + clientID); 
    conn.setRequestMethod("POST"); 
    conn.setRequestProperty("Content-Type", 
      "application/x-www-form-urlencoded"); 

    conn.connect(); 
    StringBuilder stb = new StringBuilder(); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(
      new InputStreamReader(conn.getInputStream())); 
    String line; 
    while ((line = rd.readLine()) != null) { 
     stb.append(line).append("\n"); 
    } 
    wr.close(); 
    rd.close(); 

    return stb.toString(); 
} 

幾乎像矮胖,讓每一塊重新走到一起,來自任何地方的代碼,至少它按預期工作,其遺憾的是他們沒有例子......
享受。

PS:歐也可以對文件做(還沒有嘗試過),但你需要將圖像轉換爲Base64,然後爲utf8(更換網址)

編輯,使用這個代替URL的,所以你可以上傳文件:

//create base64 image 
    BufferedImage image = null; 
    File file = new File(imageDir); 
    //read image 
    image = ImageIO.read(file); 
    ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); 
    ImageIO.write(image, "png", byteArray); 
    byte[] byteImage = byteArray.toByteArray(); 
    String dataImage = Base64.encode(byteImage); 
    String data = URLEncoder.encode("image", "UTF-8") + "=" 
    + URLEncoder.encode(dataImage, "UTF-8");