2

所以有这行代码

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 密钥在此处”,它说“密钥”是什么我要进去吗?也是上传它的网站http://imgur.com/api/upload因为我见过一些不同的。

4

2 回答 2

8

试试这个:

    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:你也可以用FILES制作(还没试过),但你需要将图像转换为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");
于 2014-01-03T16:42:41.837 回答
1

要上传到的站点是 - https://api.imgur.com/3/image或者您可以使用相同的链接“上传”而不是图像。

我目前正在尝试自己使用 Imgur API,虽然我还没有完全正确(我似乎无法解析 URL 响应),但我已经查看了很多代码示例。您确定使用 API 的第 3 版吗?

因为 API 的主页说您应该以这种格式“授权客户端 ID YOUR_CLIENT_ID”提供您的客户端 ID,而不是像您一样使用“密钥”。

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

编辑:您可能会发现以下有用 - Anonymous Uploading File object to Imgur API (JSON) give Authentication Error 401

于 2013-06-27T21:47:02.577 回答