Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 01.12.2017, 02:46   #1
Kvitkaa
Новичок
Джуниор
 
Регистрация: 27.10.2016
Сообщений: 2
По умолчанию Получение информации с вебсервиса используя REST API - Java

Мне нужно получить информацию с API http://countryapi.gear.host/v1/Count...Name=Australia , конвертировать JSON на String и выписать данные на консоли. Хочу получить информацию для Австралии, которая будет включать поля Name и Alpha2Code в таком виде: Australia, AU.

Пробовала использовать EntityUtils.toString(response), но это не работает.

Мой код:

Код:
public class Client {
 
public static void main(String[] args) throws ClientProtocolException, IOException {
 
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://countryapi.gear.host/v1/Country/getCountries?pName=Australia");
request.addHeader("accept", "application/json");
HttpResponse response = client.execute(request);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line = reader.readLine();
// line = EntityUtils.toString(response.getEntity());
// line = EntityUtils.toString(entity);
System.out.println(line);
// String responseString = EntityUtils.toString(response.getEntity());
}
}
 
public class Country {
 
@JsonProperty
private String name;
@JsonProperty
private String alpha2Code;
 
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAlpha2Code() {
return alpha2Code;
}
public void setAlpha2Code(String alpha2Code) {
this.alpha2Code = alpha2Code;
}
}
public class WebApi {
 
    @JsonProperty
    private boolean isSuccess;
    @JsonProperty
    private String userMessage;
    @JsonProperty
    private String technicalMessage;
    @JsonProperty
    private int totalCount;
    @JsonProperty
    private Country response;
// getters & setters
}
 
public class WebClient {
 
    private ObjectMapper objectMapper;
    private String url;
    
    public WebClient() {
        objectMapper = new ObjectMapper();
        objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
    }
    
    public Country[] getCountry(String name) throws Exception{
        Country[] country = null;
        
        String json = getJson(url + name);
        WebApiResponse webApiResponse = null;
        try {
 
    webApiResponse =(WebApiResponse) objectMapper.readValue(json, WebApiResponse.class);
} catch (IOException e) {
    throw new Exception("Blad");
}
        if (webApiResponse !=null) {
            Country[] countries = webApiResponse.getResponse();
            if(countries!=null && countries.length>=1)
            {
            return countries;
            }
    }
        return country;
    }
        public String getJson(String g) {
            return g;
        }
        }
        
public class WebApiResponse{
 
    private boolean success;
    private String region;
    private String nativeName;
    private int latitude;
    private int longitude;
    private String currencyCode;
    
    public WebApiResponse(boolean s, String n, int l1, int l2, String c) {
        this.success = s;
        this.nativeName = n;
        this.latitude = l1;
        this.longitude = l2;
        this.currencyCode = c;
    }
 
    public Country[] getResponse() {
        // TODO Auto-generated method stub
        return null;
    }
}
Сейчас мой код лишь возвращает JSON для Австралии:

Код:
{"IsSuccess":true,"UserMessage":null,"TechnicalMessage":null,"TotalCount":1,"Response":[{"Name":"Australia","Alpha2Code":"AU"...
Kvitkaa вне форума Ответить с цитированием
Старый 01.12.2017, 03:47   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,739
По умолчанию

Цитата:
Сообщение от Kvitkaa Посмотреть сообщение
Сейчас мой код лишь возвращает JSON для Австралии:
Ваш код честно возвращает то, что Вы честно запросили у сервера. Не более.

Для того, чтобы данные из JSON стали, скажем так, пригодны для использования, его нужно распарсить.

В свою очередь для этого Java имеет встроенные средства.
Streletz вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
REST обновить AccessToken google api grigandal1580 Работа с сетью в Delphi 2 14.11.2017 14:41
Разработка REST API - на чем? supervine Общие вопросы Web 4 04.05.2017 23:22
Отправка сообщенмя через API VK и Rest Client Cruzel C++ Builder 1 29.09.2014 18:42
Получение ответа от компонента REST Cruzel C++ Builder 1 08.09.2014 20:38