Как я могу получить фид в JSON из сервлета Java? - PullRequest
0 голосов
/ 06 декабря 2009

Я хочу сделать запрос Http и сохранить результат в JSONObject. Я не очень много работал с сервлетами, поэтому я не уверен, что я 1) правильно сделал запрос и 2) должен был создать JSONObject. Я импортировал классы JSONObject и JSONArray, но я не знаю, где мне следует их использовать. Вот что у меня есть:

     public void doGet(HttpServletRequest req, HttpServletResponse resp)
 throws IOException {

        //create URL    
        try {
            // With a single string.
            URL url = new URL(FEED_URL);

            // Read all the text returned by the server
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
            String str;
            while ((str = in.readLine()) != null) {
                // str is one line of text; readLine() strips the newline character(s)
            }
            in.close();
        } catch (MalformedURLException e) {
        }
        catch (IOException e) {
        }

Мой FEED_URL уже записан, поэтому он будет возвращать канал, отформатированный для JSON.

Это доходило до меня часами. Большое спасибо, ребята, вы бесценный ресурс!

Ответы [ 2 ]

2 голосов
/ 06 декабря 2009

Сначала соберите ответ в строку:

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder fullResponse = new StringBuilder();
String str;
while ((str = in.readLine()) != null) {
  fullResponse.append(str);
}

Тогда, если строка начинается с "{", вы можете использовать:

JSONObject obj = new JSONObject(fullResponse.toString()); //[1]

и если он начинается с "[", вы можете использовать:

JSONArray arr = new JSONArray(fullResponse.toStrin()); //[2]

[1] http://json.org/javadoc/org/json/JSONObject.html#JSONObject%28java.lang.String%29

[2] http://json.org/javadoc/org/json/JSONArray.html#JSONArray%28java.lang.String%29

0 голосов
/ 07 декабря 2009

Во-первых, это на самом деле не проблема сервлета. У вас нет проблем с javax.servlet API. У вас просто проблемы с java.net API и JSON API.

Для анализа и форматирования строк JSON я бы рекомендовал использовать Gson (Google JSON) вместо устаревших API-интерфейсов JSON. Он имеет гораздо лучшую поддержку обобщенных и вложенных свойств и может преобразовать строку JSON в полноценный javabean за один вызов.

Я разместил полный пример кода раньше здесь . Надеюсь, вы найдете это полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...