Загрузка фото через imgur на андроид программно - PullRequest
2 голосов
/ 18 августа 2011

Мне нужна помощь в использовании API imgur для загрузки фотографии и получения ссылки.

API IMGUR: http://api.imgur.com/resources_anon

Я могу получить URI для своегоизображение необходимо загрузить, но как я могу реализовать API выше, я скачал mime4j и httpmime и добавил их в библиотеки, но я не могу понять, как их использовать,

Я смотрелэто, но меня смутило: Отправка изображений с помощью Http Post

1 Ответ

3 голосов
/ 19 августа 2011

Просто из быстрого взгляда на imgur и на этот вопрос , я придумал (в значительной степени просто объединил два) следующее.Дайте мне знать, если это не сработает.

Bitmap bitmap = yourBitmapHere;

// Creates Byte Array from picture
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); // Not sure whether this should be jpeg or png, try both and see which works best
URL url = new URL("http://api.imgur.com/2/upload");

//encodes picture with Base64 and inserts api key
String data = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(Base64.encode(baos.toByteArray(), Base64.DEFAULT).toString(), "UTF-8");
data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(YOUR_API_KEY, "UTF-8");

// opens connection and sends data
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

Редактировать: Кажется, нам нужно передать Base64.DEFAULT в качестве второй опции Base64.encode.Обновленный пример выше.

Редактировать 2: Можете ли вы использовать следующий код, основанный на сайте оракула , и сообщить, что он выводит:

BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            conn.getInputStream()));

String inputLine;

while ((inputLine = ic.readLine()) != null) 
    System.out.println(inputLine);
in.close();
...