Шаг 1: Выберите интерфейс «Интерфейс национального прогноза погоды», как показано в этой статье. Совокупный URL данных: http://www.juhe.cn/docs/api/id/39/aid/87
Шаг 2: Каждый интерфейс должен передать клавишу параметра, что эквивалентно токену пользователя, поэтому первый шаг, который вам необходимо подать заявку на ключ.
Шаг 3: Студенты, которые изучали Java, знают, что, когда мы не понимаем намерения и идеи класса или метода, мы можем проверить документ, и это не исключение. К счастью для студентов, которые не особенно хороши в английском языке, документы на веб -сайте агрегации находятся в китайской версии, что должно быть намного проще, чем читать английские документы в исходном коде Java. Существует шесть подметочных в национальном интерфейсе прогноза погоды. Откройте первую ссылку на интерфейс, посмотрите на документ и обнаружите, что вам нужно передать название города или параметр идентификатора города. Этот параметр может быть получен через шестой подвластное лицо (вызовы между интерфейсами аналогичны вызовам между методами в Java), то есть поддерживается приобретение списков города. Итак, в примере мы сначала называем этот интерфейс. Вызов интерфейса включает проблему запроса сетевых ресурсов. Здесь я инкапсулирую класс инструментов, включая два метода: Get и Post.
Шаг 4: Код выглядит следующим образом:
Demo1: класс инструментов доступа к сети (инкапсулировать методы Get и Pult)
Пакет juheapi; импорт java.io.bufferedReader; импорт java.io.bufferedwriter; импорт java.io.inputstream; import java.io.inputStreamReader; импорт java.io.outputStreamwriter; import.net.httpurlConection; импорт java.net.url; Класс* @author silk**/public class purenetutil {/*** Метод получения непосредственно вызывает метод сообщения* @param URL -адрес сетевого адреса* @return return Network Data*/public Static String get (String url) {return post (url, null); } /*** Установите метод POST для получения сетевых ресурсов. Если параметр является нулевым, он фактически устанавливается как метод GET* @Param URL-адрес сетевого адреса* @param param запрос параметра параметров клавиш* @return return read data*/ public Static String post (string url, map param) {httpurlConnection conn = null; попробуйте {url u = new url (url); conn = (httpurlconnection) u.openconcenection (); Stringbuffer sb = null; if (param! = null) {// Если параметр запроса не пуст sb = new Stringbuffer (); /*Подключение URL может использоваться для ввода и/или вывода. Установите флаг DOOUTPUT * на TRUE, если вы собираетесь использовать URL -соединение для вывода, * FALSE, если нет. По умолчанию false.*/// По умолчанию неверно. Метод POST должен написать параметры и установить true conn.setDoOutput (true); // Установить метод сообщения, по умолчанию получить conn.setrequestmethod ("post"); // Получить выходной поток outputstream = conn.getOutputStream (); // инкапсулировать выходной поток в расширенный выходной поток BufferedWriter Writer = New BufferedWriter (New OutputStreamWriter (OUT)); // инкапсулируют параметры в пары клавишных значений для (map.entry s: param.entryset ()) {sb.append (s.getkey ()). Append ("="). Append (s.getValue ()). Append ("&"); } // Написать параметры через выходной поток в writer.write (sb.deletecharat (sb.tostring (). Length ()-1) .toString ()); writer.close (); // он должен быть закрыт, иначе может быть ошибка с неполными параметрами sb = null; } connect (); // Сделать соединение sb = new StringBuffer (); // Получить код состояния подключения int decode = conn.getResponsecode (); BufferedReader Reader = null; if (Recode == 200) {// Возвращает входной поток, который считывает из этого открытого соединения // Получить поток ввода из подключения inputstream in = conn.getInputStream (); // инкапсулируют входной stream reader = new BufferedReader (New InputStreamReader (in)); String str = null; sb = new StringBuffer (); // Читать данные из входного потока while ((str = reader.readline ())! = Null) {sb.append (str) .append (system.getProperty ("line.separator")); } // Закрыть входной stream reader.close (); if (sb.toString (). length () == 0) {return null; } return sb.toString (). substring (0, sb.toString (). length () - System.getProperty ("line.separator"). Length ()); }} catch (Exception e) {e.printstackTrace (); вернуть ноль; } наконец {if (conn! = null) // Закройте соединение conn.disconnect (); } return null; }} DEMO2: звонок, чтобы получить пример интерфейса списка города
Пакет juheapi; import net.sf.json.jsonarray; import net.sf.json.jsonobject;/** * Получить список города * Пример вызова Java в национальном интерфейсе прогноза погоды * Dtype n stort n return data format: json или xml, default json * string y get weat for * @author silk * */public class y letmity y get stork * * * * * * * * * * * * * * * * * * * * * * * * * * Интерфейс списка, вернуть все данные*@return return interface Data*/public Static String Excute () {string url = "http://v.juhe.cn/weather/citys?key=****7558B2E0BedAAA19673F74A6809CE";//Interface URL//pureTitu Данные возврат purenetutil.get (url); // Использовать метод получить метод get}/** * После вызова интерфейса, чтобы вернуть данные, проанализируйте данные и получите соответствующий идентификатор на основе входного имени города * @param cityname cityname name * @return return toclive ud */public static getidbycityname (String cityNam if (result! = null) {jsonObject obj = jsonObject.fromObject (result); result = obj.getString ("resultCode"); // Получить код состояния возврата if (result! = null && result.equals ("200")) {// 200 Указывает успешное возвращение данных Result = obj.getString ("result"); // Получить массив строкости в форме json в списке города jsonarray arr = jsonarray.fromobject (result); for (Object o: arr) {// Перенос arr // sackse a json numeric string в массиве obj = jsonobject.fromobject (o.toString ()); /*В это время obj is {«id»: «2», «провинция»: «Пекин», «Город»: «Пекин», «Район»: «Хайдиан»}*/// Запись, которая должна быть найдена для суждения, основанного на ключевом городе как ключевой результат = obj.getString («District»); // Предотвращение неполного названия входного города, такого как вход в город Сучжоу как Сучжоу, аналогично нечеткому запросу if (result.equals (cityname) || result.contains (cityname)) {result = obj.getString ("id"); // получить результат возврата идентификатора; }}}} return result; } public static void main (string [] args) {System.out.println (getIdbyCityName ("Гонконг")); }} DEMO3: Позвоните, чтобы проверить погоду на основе названия города/ID
Пакет Juheapi; Импорт net.sf.json.jsonobject; /** * Запросить погоду по названию города/id * @author silk * */public class WeatherReportBycity {/** * get */param CityName * @return */public Static String Excute (String CityName) {String url = // Вот пример данных формата формата JSON, SO FORMAT = 2. Принимая название города в качестве примера, CityName передается в китайский "http://v.juhe.cn/weather/index?cityname="+cityname+"&key=****7558B2E0Bedaa19673F74a6809ce"; return purenetutil.get (url); // Получить данные возврата через класс инструментов}/*** Получить пример атрибута в возвращаемых данных, вот образец получения сегодняшней температуры* "" Температура ":" 8 ℃ ~ 20 ℃ "сегодняшняя температура* @param args* @return*/public Static String GettodayTemperatureTriationByCity (строка resture); if (result! = null) {jsonObject obj = jsonObject.fromObject (result); /*Получить код состояния возврата*/ result = obj.getString ("resultCode"); /*Если код состояния составляет 200, это означает, что данные возвращаются успешно*/ if (result! = Null && result.equals ("200")) {result = obj.getString ("result"); // В настоящее время в результате есть несколько ключей в результате, и ключ может быть пройден для получения атрибута obj = jsonObject.fromObject (result); // ключ, соответствующий сегодняшней температуре, сегодня результат = obj.getString («Сегодня»); obj = jsonObject.fromObject (результат); // соответствующим ключом сегодняшней температуры является температурный результат = obj.getString («Температура»); результат возврата; }} return result; } public static void main (string [] args) {System.out.println (getTodayTemperatureBycity ("suzhou")); }} DEMO4: пример вызова типа погоды и интерфейса списка представлений
Пакет juheapi; import net.sf.json.jsonarray; import net.sf.json.jsonobject;/*** Пример вызова Java для типа погоды и интерфейса списка идентификации* @author silk*/public class getWeathersignAndTypelist {// interface Adder, потому что только фиксированный ключ должен быть передан в качестве параметра. "http://v.juhe.cn/weather/uni?key=****7558b2e0bedaa19673f74a6809ce"; /*** Получить данные через класс инструментов* @return*/public Static String Trink () {return purenetutil.get (url); // Вызов класса инструмента для получения данных интерфейса}/*** get* @param Wid Weather Соответствующий идентификатор* @retun obj = jsonObject.fromObject (результат); result = obj.getString ("resultCode"); /*Получить код состояния возврата*/ if (result! = Null && result.equals ("200")) {/*получить данные массива*/ result = obj.getString ("result"); Jsonarray arr = jsonarray.fromobject (result); для (объект o: arr) {// ranquility массив obj = jsonObject.fromObject (o.toString ()); // Если вы пересекаете требуемые данные и возвращаете результат напрямую, получите значение, основанное на ключе (WID), чтобы определить, равно ли оно проведенному параметру if (obj.getString ("vid"). Equals (wid)) {result = obj.getString ("погода"); результат возврата; }}}} return result; } public static void main (string [] args) {System.out.println (getWeatherBywid ("10")); }}Шаг 5: Если код состояния не составляет 200 при вызове интерфейса, обратитесь внимательно к инструкциям по документу, что означает возвращение к шагу3: прочитайте документ!
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.