Использование веб-службы JSON из клиентского приложения Java - PullRequest
3 голосов
/ 27 декабря 2010

Я занимаюсь разработкой клиентского Java-приложения, обладающего небольшой функциональностью, требующей получения данных от некоторых веб-сервисов, которые передаются в JSON (некоторые RESTful, некоторые нет).Нет JavaScript, нет веб-браузера, просто обычный JAR-файл, который будет запускаться локально с Swing для GUI.

Это не новая или уникальная проблема;несомненно, должны быть некоторые библиотеки с открытым исходным кодом, которые будут обрабатывать передачу данных JSON по HTTP.Я уже нашел некоторые, которые будут анализировать JSON, но у меня возникли проблемы с поиском любой, которая будет обрабатывать HTTP-связь для использования веб-службы JSON.

До сих пор я обнаружил, что Apache Axis2, вероятно,по крайней мере, часть решения, но я не вижу достаточно документации, чтобы знать, будет ли оно делать то, что мне нужно, или как его использовать.Возможно, часть проблемы в том, что у меня нет опыта работы с веб-сервисами, поэтому я не могу найти решение, когда увижу его.Я надеюсь, что некоторые из вас могут указать мне правильное направление.Примеры будут полезны.

Ответы [ 4 ]

5 голосов
/ 03 января 2011

Если вы хотите немного больше комфорта, чем иметь дело с URLConnection, посмотрите Resty для Java.Простой, легкий, но все же довольно новый.

http://beders.github.com/Resty

Вот пример для JSON:

Resty r = new Resty();
String name = r.json("http://ws.geonames.org/postalCodeLookupJSON?"+
    "postalcode=66780&country=DE").get("postalcodes[0].placeName").toString();

Нет зависимостей.Одна маленькая банка, и вы готовы идти.

4 голосов
/ 27 декабря 2010

Apache HttpClient 4.0 является лучшим в бизнесе и в меру легким в освоении.

Если вы хотите проще, вы можете использовать HtmlUnit который имитирует поведение браузеров, чтобы вы могли легко получить контент (и проанализировать его в Html, javascript и css, вы также можете выполнить код javascript для контента, чтобы вы могли, вероятно, анализировать файлы JSON с использованием JSON.parse или любых других эквивалентных функций) любой страницы в Интернете.

, поэтому для HtmlUnit приведен пример кода:

WebClient wc = new WebClient(BrowserVersion.FIREFOX_3_6);
HtmlPage page = wc.getPage("http://urlhere");
page.executeJavaScript("JS code here");

, но он может быть довольно тяжелым для ваших требований, поэтому настоятельно рекомендуем использовать Библиотека HttpClient .Я уверен, что вы можете найти много библиотек JSON для Java, но вот одна для вас json-lib

1 голос
/ 25 января 2014

Я сделал это с помощью простой библиотеки Java JSON. Используйте библиотеку Google ..

URL url = new URL("http://www.siteconsortium.com/services/hello.php");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

JSONParser parser=new JSONParser();
Object object = parser.parse(in);

JSONArray array = (JSONArray) object;        
JSONObject object2 = (JSONObject)array.get(0);
System.out.println(object2.get("hello")); 

Если веб-служба использует OAuth и токен доступа, вы не можете использовать приведенный выше пример.

0 голосов
/ 27 декабря 2010

Приятно видеть, что ваши веб-сервисы RESTful.Веб-службы RESTful довольно просты в разработке и использовании. Ну ... вам не нужно предпринимать никаких дополнительных усилий для передачи данных JSON по сети ... Данные в формате JSON или в формате XML встраиваются в заголовок HTTP.Следующий фрагмент кода поможет вам понять идею:

<code>httpConnection = new HTTPConnectionManager(request);
HttpURLConnection httpURLConnection = httpConnection.connect();
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
    in = httpURLConnection.getInputStream();
    int x;
    StringBuilder stringBuilder = new StringBuilder();
    while ((x = in.read()) != -1) {
        stringBuilder.append((char) x);
    }
    XMLParser xmParser = new XMLParser();
    ....
    ....
}

В этом коде я получаю данные в формате XML от веб-служб. После получения данных вStringBuilder объект, я разбираю XML.Таким же образом вы можете вызывать свои веб-службы с помощью этого кода и получать ваши данные JSON.Вы можете использовать API javaJSON, доступные Здесь , для извлечения данных из записи JSON.

Код Надежды поможет вам ...

PSКлассы: HTTPConnectionManager, XMLParser и Request (request object) не являются стандартными API.они написаны моей собственной учетной записью для обработки нескольких вызовов веб-служб.Этот фрагмент кода просто чтобы дать вам мою идею.

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