Какой самый простой способ чтения в файле XML с использованием GWT? - PullRequest
2 голосов
/ 17 января 2012

Я бы хотел прочитать файл XML, который хранится на моем сервере Tomcat в другом месте, чем мой проект GWT. Как это легко сделать? Должен ли я делать удаленные вызовы процедур? Может быть, получение данных JSON через HTTP? Я видел эту страницу , но не уверен, является ли это решением моей проблемы или что-то вроде RPC делает это более трудным, чем это должно быть. Я новичок, поэтому, пожалуйста, направьте меня в правильном направлении, если я все сделаю неправильно.

Я также просмотрел эту страницу , которая объясняет, как анализировать XML-файл. Я понимаю синтаксический анализ, но у меня возникают проблемы с выяснением, как получить XML-файл с сервера в первую очередь. Я пробовал это:

try {
        new RequestBuilder(RequestBuilder.GET, 
                "http://localhost:8180/Videos/testFile.xml").
                sendRequest("", new RequestCallback() {

              @Override
              public void onResponseReceived(Request req, Response resp) {
                String text = resp.getText();
                // This method parses the XML file, but is never getting any data to parse
                parseMessage(text);
              }

              @Override
              public void onError(Request res, Throwable throwable) {
                // handle errors
                  System.out.println("Error occurred");
              }
            });
    } catch (RequestException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Но когда я пытаюсь это сделать, parseMessage(text) никогда не получает данные для анализа, он просто получает пустую строку.

Ответы [ 3 ]

2 голосов
/ 17 января 2012

Попробуйте:

String url = "http://localhost:8180/Videos/testFile.xml";
// typically it would be a good idea to URL.encode(url);
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
try {
    builder.sendRequest(null, new RequestCallback() {

          @Override
          public void onResponseReceived(Request req, Response resp) {
            String text = resp.getText();
            parseMessage(text);
          }

          @Override
          public void onError(Request res, Throwable throwable) {
            // handle errors
              System.out.println("Error occurred");
          }
        });
} catch (RequestException e) {
    e.printStackTrace();
}

Если проблемы все еще возникают, начните отладку ответа.

1 голос
/ 18 января 2012

Убедитесь, что ваш файл действительно находится в war/Videos/testFile.xml.Затем, хитрость для разработки и отладки, добавьте + "?uid=" + Math.random() к вашему имени файла, иначе ваш браузер может кэшировать файл, всегда давая вам один и тот же (в данном случае пустой) файл.

Может быть та же проблема с источником, но если вы запускаете ее локально (ваш сервер на порту 8180), не должно быть.Но убедитесь, что это тот же сервер, с которого вы извлекаете ваши xml и приложение, иначе они будут работать на разных портах, вызывая проблему SOP.

0 голосов
/ 17 января 2012

Я думаю, что вы, вероятно, нарушите правила межсайтового скриптинга.

По странным историческим причинам, которые не имеют никакого отношения к безопасности, клиентское приложение может получать данные JSON с хоста.кроме своего «домашнего сайта», но он не может получить данные XML.

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