2

そのため、画像をアップロードするためにimgur apiの例の1つを使用していますが、画像を表示するためのアップロードリンクを取得する方法に固執しています。

これは私がこれまでに持っているものであり、アップロードすることができると言えますが、アップロードへのリンクを取得しないと、それ自体はあまり役に立ちません。

これは私がこれまでに持っているものです。

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

1 に答える 1

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();
}
于 2012-04-24T23:22:49.320 に答える