Получение ошибки при попытке проанализировать поток атомов из соединений с помощью abdera

Я получаю следующую ошибку при попытке проанализировать канал атома. org.apache.abdera.parser.ParseException: java.lang.ArrayIndexOutOfBoundsException at org.apache.abdera.parser.stax.FOMParser.parse(FOMParser.java:128) в org.apache.abdera.util.arse.java:73) at testfeedreader.TestFeedReader.main(TestFeedReader.java:44) Причина: java.lang.ArrayIndexOutOfBoundsException ....

Вот мой код для читателя. Я жестко запрограммировал URL для тестирования:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package testfeedreader;

import java.io.IOException;
import java.net.URL;
import java.util.List;

import org.apache.abdera.Abdera;
import org.apache.abdera.model.Document;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Category;
import org.apache.abdera.model.Link;
import org.apache.abdera.parser.ParseException;
import org.apache.abdera.parser.Parser;

/**
 *
 * @author srieger
 */
public class TestFeedReader {

    private static Abdera abdera = null;

    /**
     *
     * @return
     */
    public static synchronized Abdera getInstance() {
        if (abdera == null) {
            abdera = new Abdera();
        }
        return abdera;
    }

    public static void main(String[] args) {
        Parser parser = getInstance().getParser();

        try {
            URL url = new URL("http://connect.lmsnet.com/files/basic/anonymous/api/documents/feed");
            Document<Feed> doc = parser.parse(url.openStream(), url.toString());
            Feed feed = doc.getRoot();
            // Get the feed title
            System.out.println("Feed Title: " + feed.getTitle());

            // Get the entry items...
            for (Entry entry : feed.getEntries()) {
                System.out.println("Title: " + entry.getTitle());
                System.out.println("Unique Identifier: " + entry.getId().toString());
                System.out.println("Updated Date: " + entry.getUpdated().toString());
                System.out.println("Published Date: " + entry.getPublished());
                System.out.println("Content: " + entry.getContent());

                // Get the links
                for (Link link : (List<Link>) entry.getLinks()) {
                    System.out.println("Link: " + link.getHref());
                }               

                // Get the categories
                for (Category category : (List<Category>) entry.getCategories()) {
                    System.out.println("Category: " + category.getTerm());
                }
            }
        } catch( IOException | ParseException e )
        {
            e.printStackTrace();
        }
    }
}

1 ответ

Основываясь на обсуждении, ответ таков: код получает страницу регистрации в качестве ответа, поэтому возникает ошибка синтаксического анализа.

Возможности:

  1. Конфигурация SSO - изучите документацию SBT SDK и используйте SSO для аутентификации.

  2. Переместите ваш код на клиентскую сторону - так что вместо этого, обрабатывая его в SSJS/Java в фоновом режиме, используйте некоторый виджет и разбор JS, чтобы показать необходимую информацию пользователю. Таким образом, вызов будет аутентифицирован по идентификатору пользователя в браузере.

Apache Abdera использует org.apache.axiomlib, поэтому используйте это как зависимость в файле pom. вы можете проверить это с помощью другого блока catch.NoClassDefFoundError. этот ответ для помощи людям, которые смотрят на это.

Другие вопросы по тегам