2013-06-27 3 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"); 

и когда я зарегистрировался в API Imgur я получил client_id и client_secret и задавался вопросом, который я использую для того, где он говорит, что «ВАША API KEY GOES ЗДЕСЬ "также в первой части во второй строке, где говорится« ключ », что мне там вводить? Также сайт, чтобы загрузить его http://imgur.com/api/upload, потому что я видел несколько разных.

ответ

1

Сайт для загрузки - https://api.imgur.com/3/image или вы можете использовать одну и ту же ссылку с «upload» вместо изображения.

В настоящее время я пытаюсь использовать API Imgur сам, и хотя я еще не получил его полностью прав (я не могу разобрать ответ на URL) Я рассмотрел довольно много примеров кода для него. Вы определенно используете версию 3 API?

Поскольку на веб-сайте API говорится, что вы должны указать свой идентификатор клиента в этом формате «ID клиента авторизации YOUR_CLIENT_ID», не используя «ключ», как вы.

Посмотрите http://api.imgur.com/

Edit: вы можете найти следующую полезную - 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

Извините, не понял, нажав enter, добавьте комментарий. Вы говорите, что вам дали client_id и client_secret, которые не будут работать с вашим кодом, потому что я был прав, думая, что вы используете версию 2 API. Вы можете сказать это, потому что ваш URL-адрес загрузки содержит/2 /, тогда как тот, который я показал вам, имеет/3 /. Версия 2 API использовала «ключ», о котором вы говорите, но в версии 3 они заменяли это на использование идентификатора клиента и секретности клиента. Они больше не выдают «ключи», и они не работают с версией 3 API. –

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

был почти как Шалтай-Болтай, получая каждый кусок обратно вместе, коды от везде, по крайней мере, он работал как ожидалось, его позор у них нет примеров ...
наслаждайтесь.

пс: НУ может также сделать с файлами (еще не пробовал), но вы должны преобразовать изображение в base64, а затем в utf8 (для замены URL)

редактировать, использовать это вместо в 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");