Как считать ответ XML из URL в Java?

Я должен записать простую функцию, которая берет URL и обрабатывает ответ, который является XML или JSON, я проверил веб-сайт Sun https://swingx-ws.dev.java.net/servlets/ProjectDocumentList, но объект HttpRequest не состоит в том, чтобы быть найден нигде, действительно ли возможно сделать это в Java? Я пишу оконечное приложение толстого клиента.

45
задан Karussell 5 October 2011 в 11:44
поделиться

5 ответов

Для XML-синтаксического анализа входящего потока вы можете:

// the SAX way:
XMLReader myReader = XMLReaderFactory.createXMLReader();
myReader.setContentHandler(handler);
myReader.parse(new InputSource(new URL(url).openStream()));

// or if you prefer DOM:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new URL(url).openStream());

Но для связи по http от сервера к клиенту я предпочитаю использовать библиотеку Hessian ] или запускает http invoker lib

79
ответ дан 26 November 2019 в 21:07
поделиться

Измените разметку на что-то вроде

<input type="checkbox" class='form' value="1" name="checkbox[]" />
<input type="checkbox" class='form' value="2"  name="checkbox[]" />
<input type="checkbox" class='form' value="3"  name="checkbox[]" />

и для получения отправленных значений используйте простой цикл

foreach($_POST['checkbox'] as $checkbox){
    echo $checkbox . ' ';
}
-121--3433001-

В качестве ответа для # 1: Yes. Это довольно хорошо для этого; языки сценариев с помощью наборов инструментов GUI часто являются хорошим способом поместить GUI в приложение. Они также могут использоваться для переноса приложений, написанных на низкоуровневых языках, таких как C или C++. Python предлагает хорошую интеграцию с большим количеством инструментальных средств. Проводка, связанная выше, дает довольно хорошее сечение опций с образцами кода.

Для # 2: TkInter поставляется со стандартным распределением. Он прост в использовании, но не так сложен, как (скажем) QT или WxWidgets.

-121--2980854-

Получите ответ по обычному HTTP-запросу, используя:

Следующим шагом является его анализ. Ознакомьтесь с этой статьей для выбора синтаксического анализатора.

5
ответ дан 26 November 2019 в 21:07
поделиться

Ok я думаю я решил проблему ниже рабочий код

//
package xmlhttp;

import org.jdesktop.http.Response;

import org.jdesktop.http.Session;

import org.jdesktop.http.State;



public class GetXmlHttp{


    public static void main(String[] args) {

        getResponse();

    }

    public static void getResponse()
    {

        final Session session = new Session();

        try {
            String url="http://192.172.2.23:8080/geoserver/wfs?request=GetFeature&version=1.1.0&outputFormat=GML2&typeName=topp:networkcoverage,topp:tehsil&bbox=73.07846689124875,33.67929015631999,73.07946689124876,33.68029015632,EPSG:4326";
            final Response res=session.get(url);
            boolean notDone=true;
            do
            {
                System.out.print(session.getState().toString());

                if(session.getState()==State.DONE)
                {
                    String xml=res.toString();
                    System.out.println(xml);
                    notDone=false;


                }

            }while(notDone);

        } catch (Exception e1) {

            e1.printStackTrace();
        }


    }

}
1
ответ дан 26 November 2019 в 21:07
поделиться

Если вы конкретно хотите использовать SwingX-WS, то посмотрите на XmlHttpRequest и JSONHttpRequest.

Подробнее об этих классах в статье блога XMLHttpRequest и Swing.

3
ответ дан 26 November 2019 в 21:07
поделиться

Если вы хотите распечатать XML прямо на экране, вы можете использовать TransformerFactory

URL url = new URL(urlString);
URLConnection conn = url.openConnection();

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(conn.getInputStream());

TransformerFactory transformerFactory= TransformerFactory.newInstance();
Transformer xform = transformerFactory.newTransformer();

// that’s the default xform; use a stylesheet to get a real one
xform.transform(new DOMSource(doc), new StreamResult(System.out));
9
ответ дан 26 November 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: