Paso 1: seleccione la interfaz "Interfaz de pronóstico del clima nacional" como se muestra en este artículo. URL de datos agregados: http://www.juhe.cn/docs/api/id/39/aid/87
Paso 2: cada interfaz debe pasar una clave de parámetro, que es equivalente al token del usuario, por lo que el primer paso que debe solicitar una clave.
Paso 3: Los estudiantes que han estudiado Java saben que cuando no entendemos la intención y las ideas de una clase o método, podemos verificar el documento, y esto no es una excepción. Afortunadamente para los estudiantes que no son particularmente buenos en inglés, los documentos en el sitio web de agregación están en versión china, lo que debería ser mucho más fácil que leer los documentos en inglés en el código fuente de Java. Hay seis subterfaces bajo la interfaz de pronóstico del clima nacional. Abra el primer enlace de la interfaz y mire el documento y descubra que necesita pasar un nombre de la ciudad o parámetro de identificación de la ciudad. Este parámetro se puede obtener a través de la Sexta Subinterfaz (las llamadas entre interfaces son similares a las llamadas entre los métodos en Java), es decir, es compatible con la adquisición de listas de la ciudad. Entonces, en el ejemplo, primero llamamos a esta interfaz. Llamar a la interfaz implica el problema de solicitar recursos de red. Aquí encapsulé una clase de herramientas, incluidos dos métodos: obtener y publicar.
Paso 4: El código es el siguiente:
Demo1: Clase de herramienta de acceso a red (encapsulate get and post métodos)
paquete juheapi; import java.io.bufferedReader; import java.io.bufferedwriter; import java.io.inputstream; import java.io.inputstreamreader; import java.io.outputstreamwriter; import java.net.httpurlconnection; import java.net.url; import java.util.map; Clase* @author seda**/public class PurenetUtil {/*** Get Method llama directamente el método de publicación* @param URL Dirección de red* @@return return data*/public static string get (string url) {return post (url, null); } /*** Establezca el método de publicación para obtener recursos de red. Si el parámetro es nulo, en realidad se establece como el método GET* @param URL Dirección de red* @param Param Solicitud Parámetro Key-Value Value Par* @return return Read Data*/ public static String Post (String url, map param) {httpurlconnection conn = null; intente {url u = new url (url); conn = (httpurlconnection) u.openconnection (); Stringbuffer sb = null; if (param! = null) {// Si el parámetro de solicitud no está vacío sb = new StringBuffer (); /*Se puede usar una conexión URL para la entrada y/o salida. Establezca el indicador Dooutput * en verdadero si tiene la intención de usar la conexión URL para la salida, * falso si no. El valor predeterminado es falso.*/// El valor predeterminado es falso. El método de publicación debe escribir parámetros y establecer True Conn.setDoOutput (true); // Establecer el método de publicación, predeterminado Get Conn.SetRequestMethod ("Post"); // Obtener la transmisión de salida OutputStream Out = Conn.getOutputStream (); // Encapsula la transmisión de salida en la transmisión avanzada de la transmisión BufferedWriter Writer = new BufferedWriter (nuevo OutputStreamWriter (Out)); // Encapsula los parámetros en pares de valor clave para (map.entry s: param.entryset ()) {sb.append (s.getkey ()). Append ("="). Append (s.getValue ()). Append ("&"); } // Escriba los parámetros a través de la transmisión de salida a Writer.write (sb.deletecharat (sb.toString (). Longitud ()-1) .ToString ()); writer.close (); // debe cerrarse, de lo contrario puede haber un error con los parámetros incompletos sb = null; } conectar (); // hacer una conexión sb = new StringBuffer (); // Obtener el código de estado de conexión int recode = conn.getResponseCode (); BufferedReader lector = null; if (recode == 200) {// Devuelve una secuencia de entrada que lee desde esta conexión abierta // Obtener la secuencia de entrada de la conexión inputStream in = conn.getInputStream (); // Encapsular el flujo de entrada lector = new BufferedReader (new InputStreamReader (in)); Cadena str = nulo; sb = new StringBuffer (); // leer datos del flujo de entrada while ((str = lector.readline ())! = Null) {sb.append (str) .append (system.getProperty ("line.separator")); } // Cierre el flujo de entrada lector.close (); if (sb.ToString (). longitud () == 0) {return null; } return sb.ToString (). sustring (0, sb.ToString (). longitud () - system.getProperty ("line.separator"). longitud ()); }} catch (Exception e) {E.PrintStackTrace (); regresar nulo; } Finalmente {if (conn! = null) // cerrar la conexión conn.disconnect (); } return null; }} Demo2: llame para obtener el ejemplo de la interfaz de la lista de la ciudad
paquete juheapi; import net.sf.json.jsonArray; import net.sf.json.jsonObject;/** * Obtener la lista de la ciudad * Ejemplo de llamar a Java en la interfaz de pronóstico del tiempo nacional * Dtype String n Formato de datos de retorno: Json o XML, Json * Cadena clave y la clave que se solicitó para * @@author Silk * */Public Class GetCityList interfaz, devuelve todos los datos*@return return data de interfaz*/public static string excute () {string url = "http://v.juhe.cn/weather/citys?key=*****A7558b2e0bedaaaa19673f74a6809ce"; // interface url // Purenetutil es una clase de herramienta que obtiene la red de la red de los métodos de la red. Data return PurenetUtil.get (url); // use el método get}/** * Después de llamar a la interfaz para devolver los datos, analizar los datos y obtener la identificación correspondiente basada en el nombre de la ciudad de entrada * @param CityName CityName City Name * @return return la identificación */public static staticBycityName (string cityname) {string date = excute (); if (resultado! = null) {jsonObject obj = jsonObject.FromObject (resultado); resultado = obj.getString ("resultCode"); // Obtenga el código de estado de retorno if (resultado! = nulo && result.equals ("200")) {// 200 indica retorno exitoso de resultados de datos = obj.getString ("resultado"); // Obtener la matriz de cadena de formato JSON de la lista de la ciudad de la ciudad JSONArray Arr = jSonArray.Fromobject (resultado); for (objeto o: arr) {// transferir arr // analizar una cadena numérica JSON en la matriz obj = jsonObject.FromObject (O.ToString ()); /*En este momento obj es {"id": "2", "provincia": "beijing", "ciudad": "beijing", "distrito": "haidian"}*/// el registro que debe encontrarse para el juicio basado en la ciudad clave como resultado de la pista = obj.getstring ("distrito"); // Evite el nombre incompleto de la ciudad de entrada, como la entrada de la ciudad de Suzhou como Suzhou, similar a la consulta difusa if (resultado.equals (CityName) || result.contains (CityName)) {resultado = obj.getString ("id"); // get id return resultado; }}}} Resultado de retorno; } public static void main (string [] args) {System.out.println (getIdbyCityName ("Hong Kong")); }} Demo3: llame para verificar el clima en función del nombre/identificación de la ciudad
Paquete Juheapi; importar net.sf.json.jsonObject; /** * Consulta el clima por nombre de la ciudad/id * @author seda * */public class weatherReportByCity {/** * get */param cityname * @return */public static string excute (string cityName) {String url = // aquí hay un ejemplo de datos de formato JSON, SO format = 2. Tomando el nombre de la ciudad como ejemplo, CityName se pasa al chino "http://v.juhe.cn/weather/index?cityName="+CityName+"&key=***A7558B2E0BedAA19673F74A6809CE"; return PurenetUtil.get (url); // Obtenga datos de retorno a través de la clase de herramienta}/*** Obtenga un ejemplo de un atributo en los datos devueltos, aquí hay una muestra de obtener la temperatura de hoy* "temperatura": "8 ℃ ~ 20 ℃" Temperatura actual* @param* @return*/public statat string String gettodaytemperaturasbycity (string city) {string d. if (resultado! = null) {jsonObject obj = jsonObject.FromObject (resultado); /*Obtener código de estado de retorno*/ resultado = obj.getString ("resultCode"); /*Si el código de estado es 200, significa que los datos se devuelven correctamente*/ if (resultado! = NULL && result.equals ("200")) {resultado = obj.getString ("result"); // En este momento, hay múltiples claves en los datos en el resultado, y la clave se puede atravesar para obtener el atributo obj = jsonObject.FromObject (resultado); // La clave correspondiente a la temperatura de hoy es el resultado de hoy = obj.getString ("hoy"); obj = jsonObject.FromObject (resultado); // La clave correspondiente de la temperatura actual es el resultado de la temperatura = obj.getString ("temperatura"); resultado de retorno; }} Resultado de retorno; } public static void main (string [] args) {System.out.println (getTodaytemperatureByCity ("Suzhou")); }} Demo4: Ejemplo de llamadas al tipo de clima y la interfaz de la lista de representación
paquete juheapi; import net.sf.json.jsonarray; import net.sf.json.jsonObject;/*** Ejemplo de llamar a Java para la interfaz de tipo de clima y lista de identificación* @author silk*/public class getWeathersignandTypeList {// Interface Dirección, solo una clave fija se debe pasar como parámetro, está establecido en una cita final constante en constante. "http://v.juhe.cn/weather/uni?key=****A7558b2e0bebedaa19673f74a6809ce"; /*** Obtenga datos a través de la clase de herramientas* @return*/public static string escape () {return PurenetUtil.get (url); // llamando a la clase de herramienta para obtener datos de interfaz}/*** get* @param wid weather id* @return name*/public static string getweatherWid (string wid) obj = jsonObject.FromObject (resultado); resultado = obj.getString ("resultCode"); /*Obtenga el código de estado de retorno*/ if (resultado! = NULL && result.equals ("200")) {/*get data de matriz*/ resultado = obj.getString ("resultado"); JSONArray arrr = jsonArray.FromObject (resultado); for (objeto o: arr) {// matriz de tranquilidad obj = jsonObject.FromObject (O.ToString ()); // Si atraviesa los datos requeridos y devuelve el resultado directamente, obtenga el valor basado en la clave (wid) para determinar si es igual al parámetro aprobado si (obj.getString ("wid"). Equals (wid)) {result = obj.getString ("clima"); resultado de retorno; }}}} Resultado de retorno; } public static void main (string [] args) {system.out.println (getWeatherByWid ("10")); }}Paso 5: Si el código de estado no es 200 al llamar a la interfaz, consulte cuidadosamente las instrucciones del documento, lo que significa volver al Paso 3: ¡Lea el documento!
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.