2014-10-22 3 views
1

Мне нужна помощь, выполняющая вызов RESTful на веб-сайт, который возвращает объект JSON. Я застрял с вариантами, которые доступны, но я бы предпочел использовать что-то, что приходит прямо из коробки, а не устанавливать сторонние плагины.Самый простой запрос HttpGet на Java

Вот что я в настоящее время до сих пор:

import java.io.*; 
import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 

HttpClient httpClient = new DefaultHttpClient(); 
HttpGet httpGetRequest = new HttpGet("http://search.twitter.com/search.json?q=%40apple"); 

HttpResponse httpResponse = httpClient.execute(httpGetRequest); 

Я знаю, что URL, используемый в этом примере возвращает следующее:

{"errors":[{"message":"The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.","code":64}]} 

Что меня устраивает, я просто хочу, чтобы в наименее преобразуйте ответ JSON в строку, чтобы я мог перейти отсюда. Я очень хорошо разбираюсь в том, как работает REST, и было довольно легко заставить его работать с Objective-C и Python, но Java по какой-то причине имеет дюжину реализаций, чтобы заставить его работать должным образом. Я просто ищу наиболее простой подход Возможно, я не делаю ничего сумасшедшего, как загрузка изображений на сервер.

Так что проблема с моим кодом выше, так это то, что я получаю ошибку ClientProtocolException и httpClient.execute() требует, чтобы оператор try catch, это что-то совершенно новое для меня, у меня никогда не было криков компилятора для меня не вставлять попробуйте вывести высказывания.

Как исправить это, чтобы вызвать URL-адрес, который преобразует очень простой объект JSON в строку?

+0

Пуск, взглянув на [Ловля и Обработка исключений] (http://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html) и там - это несколько доступных JSON-библиотек для Java, я считаю, что библиотека [Google] (https://code.google.com/p/google-gson/) релятивистски популярна ... – MadProgrammer

+0

Использовать простой парсер JSON https://code.google.com/p/json-simple/ –

+0

Пожалуйста, объясните, как очень простой объект JSON ** не является ** строкой? –

ответ

0

Это должно работает

try { 
     HttpResponse response; 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 
     HttpGet getConnection = new HttpGet(url); 
     try { 
      response = httpClient.execute(getConnection); 
      String JSONString = EntityUtils.toString(response.getEntity(), 
        "UTF-8"); 
      JSONObject jsonObject = new JSONObject(JSONString); //Assuming it's a JSON Object 

     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }