Работа с API .
-
- Сообщения: 22
- Зарегистрирован: 17 апр 2013, 17:59
Работа с API .
Помогите разобраться.
На собеседовании попросили сделать следующее.
Программа выводит список фоток с сайта http://www.panoramio.com . когда нажимаешь по фото открывается браузер с фоткой.
Нужно использовать для получения списка фоток API rest их(http://www.panoramio.com).
Мои знания это основы джава и уроки по андроид на сайте
Вопросы:
1) Объясните пожалуйста что такое rest ?
2) Искал в интернете примеры подлючения API к приложению андроид не нашел, как это делается? и как использовать.
3) Скиньте плиз если кто знает примеры работы с API разными для андроида для чайников. Спасибо!
На собеседовании попросили сделать следующее.
Программа выводит список фоток с сайта http://www.panoramio.com . когда нажимаешь по фото открывается браузер с фоткой.
Нужно использовать для получения списка фоток API rest их(http://www.panoramio.com).
Мои знания это основы джава и уроки по андроид на сайте
Вопросы:
1) Объясните пожалуйста что такое rest ?
2) Искал в интернете примеры подлючения API к приложению андроид не нашел, как это делается? и как использовать.
3) Скиньте плиз если кто знает примеры работы с API разными для андроида для чайников. Спасибо!
Re: Работа с API .
1) мб имеется ввиду что-нибудь типа: http://habrahabr.ru/post/176729/, к слову первая гугл-ссылка по запросу "api rest android"
2) как я понял там API на JavaScript, тут ничем помочь не могу
3) к каждому API как правило индивидуальный подход (от простого привязывания .jar библиотеки, до компиляции нативной библиотеки с помощью NDK. В твоём случае ни то ни другое не подойдет)
2) как я понял там API на JavaScript, тут ничем помочь не могу
3) к каждому API как правило индивидуальный подход (от простого привязывания .jar библиотеки, до компиляции нативной библиотеки с помощью NDK. В твоём случае ни то ни другое не подойдет)
-
- Сообщения: 22
- Зарегистрирован: 17 апр 2013, 17:59
Re: Работа с API .
да видел это статью.. но она рассказывает как лучше сделать.. мне бы самый простой вариант понять.
Дали на эту задачку 1 час. Сказали сделать по простому, просто хотят посмотреть ход мысли. Если час дали значит что то не сложное должно быть..
а я даже не знаю с какого конца подойти.
Дали на эту задачку 1 час. Сказали сделать по простому, просто хотят посмотреть ход мысли. Если час дали значит что то не сложное должно быть..
а я даже не знаю с какого конца подойти.
Re: Работа с API .
то что собеседование пытаетесть пройти это хорошо, но очень рано судя по тому что задаёте такие вопросы... на счёт апи было бы время то сейчас объяснил бы, а так побежал домой ужеphenomenon писал(а):Помогите разобраться.
На собеседовании попросили сделать следующее.
Программа выводит список фоток с сайта http://www.panoramio.com . когда нажимаешь по фото открывается браузер с фоткой.
Нужно использовать для получения списка фоток API rest их(http://www.panoramio.com).
Мои знания это основы джава и уроки по андроид на сайте
Вопросы:
1) Объясните пожалуйста что такое rest ?
2) Искал в интернете примеры подлючения API к приложению андроид не нашел, как это делается? и как использовать.
3) Скиньте плиз если кто знает примеры работы с API разными для андроида для чайников. Спасибо!
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 22
- Зарегистрирован: 17 апр 2013, 17:59
Re: Работа с API .
Функционал я уже разобрался как написать . В андроид пустяки добавить.
Код: Выделить всё
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.json.*;
public class JsonGet {
/**
* @param args
* @throws JSONException
*/
public static void main(String[] args) throws JSONException {
// TODO Auto-generated method stub
ArrayList<PanoramioPhoto> list = new ArrayList<PanoramioPhoto>();
String link = "http://www.panoramio.com/map/get_panoramas.php?set=public&from=0&to=20&minx=-180&miny=-90&maxx=180&maxy=90&size=medium&mapfilter=true";
String result = requestGET(link);
int beginIndex = result.indexOf('[');
int endIndex = result.length()-1;
String resultFixed = result.substring(beginIndex, endIndex);
JSONArray jArray = new JSONArray(resultFixed);
for (int i=0;i<jArray.length();++i)
{
PanoramioPhoto photo = new PanoramioPhoto();
photo.setPhoto_id(jArray.getJSONObject(i).getString("photo_id"));
photo.setPhoto_title(jArray.getJSONObject(i).getString("photo_title"));
photo.setPhoto_url(jArray.getJSONObject(i).getString("photo_url"));
list.add(photo);
}
//for (PanoramioPhoto photo : list)
//{
// System.out.println(photo.getPhoto_id());
//}
}
static public String requestGET(String address) {
String result="";
try {
URL url = new URL(address);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("User-Agent", "Java bot");
conn.connect();
int code=conn.getResponseCode();
if (code==200) {
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
result+=inputLine;
}
in.close();
}
conn.disconnect();
conn=null;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
Последний раз редактировалось phenomenon 05 июн 2013, 19:11, всего редактировалось 1 раз.
-
- Сообщения: 22
- Зарегистрирован: 17 апр 2013, 17:59
Re: Работа с API .
Опыт приходит со временем) я не говорю что я спец в этих вешай. Опыт что спрашивают на собеседованиях тоже лишним не будет.
Re: Работа с API .
1) первое и самое не приятное что кинулось в глаза:
хочется просто услышать в ответ, зачем?
2) неправильное обрабатывание ошибки в методе requestGET, если она произойдёт на момент считывание BufferedReader то поток останется открытым
3) вот такое тоже не очень красиво:
4) хотел скопировать, указать на ошибки с конкатинацией, но их слишком много, в общем немного относится к первому вопросу, зачем? много лишних движений со строками.
5) нужно немножко поработать над красотой кода, константы как правило выносятся в поля класса.
Код: Выделить всё
int beginIndex = result.indexOf('[');
int endIndex = result.length()-1;
String resultFixed = result.substring(beginIndex, endIndex);
2) неправильное обрабатывание ошибки в методе requestGET, если она произойдёт на момент считывание BufferedReader то поток останется открытым
3) вот такое тоже не очень красиво:
Код: Выделить всё
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
5) нужно немножко поработать над красотой кода, константы как правило выносятся в поля класса.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 22
- Зарегистрирован: 17 апр 2013, 17:59
Re: Работа с API .
там инфа такого форматаrezak90 писал(а):1) первое и самое не приятное что кинулось в глаза:хочется просто услышать в ответ, зачем?Код: Выделить всё
int beginIndex = result.indexOf('['); int endIndex = result.length()-1; String resultFixed = result.substring(beginIndex, endIndex);
{
"count": 773840,"photos": [
{
"photo_id": 532693,
"photo_title": "Wheatfield in afternoon light",
"photo_url": "http://www.panoramio.com/photo/532693",
"photo_file_url": "http://static2.bareka.com/photos/medium/532693.jpg",
"longitude": 11.280727,
"latitude": 59.643198,
"width": 500,
"height": 333,
"upload_date": "22 January 2007",
"owner_id": 39160,
"owner_name": "Snemann",
"owner_url": "http://www.panoramio.com/user/39160",
},
{
"photo_id": 505229,
"photo_title": "Etangs près de Dijon",
"photo_url": "http://www.panoramio.com/photo/505229",
"photo_file_url": "http://static2.bareka.com/photos/medium/505229.jpg",
"longitude": 5.168552,
"latitude": 47.312642,
"width": 350,
"height": 500,
"upload_date": "20 January 2007",
"owner_id": 78506,
"owner_name": "Philippe Stoop",
"owner_url": "http://www.panoramio.com/user/78506"
}, ...
]
}
Код: Выделить всё
JSONArray jArray = new JSONArray(resultFixed);
а остальном да много недочетов.. я джаву и андроид учу 2 месяца. от силы. новичок)
Re: Работа с API .
всё нормально, json валидный, нужно сначала объект получить а потом массив, массивы обвёртываются в квадратные скобки, а объекты в фигурныеругается если текст начинатся с { , он тока то что между [] обрабатывает.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 22
- Зарегистрирован: 17 апр 2013, 17:59
Re: Работа с API .
терь буду знать, спс )