Etapa 1: selecione a interface "Interface nacional de previsão do tempo", como mostrado neste artigo. URL de dados agregados: http://www.juhe.cn/docs/api/id/39/id/87
Etapa2: Cada interface precisa passar uma chave de parâmetro, que é equivalente ao token do usuário; portanto, a primeira etapa necessária para solicitar uma chave.
Etapa 3: Os alunos que estudaram Java sabem que, quando não entendemos a intenção e as idéias de uma classe ou método, podemos verificar o documento, e isso não é exceção. Felizmente para estudantes que não são particularmente bons em inglês, os documentos no site de agregação estão todos na versão chinesa, o que deve ser muito mais fácil do que ler os documentos em inglês no código -fonte Java. Existem seis subinterfaces na interface nacional de previsão do tempo. Abra o primeiro link da interface e veja o documento e encontre que você precisa passar por um nome de nome da cidade ou parâmetro de identificação da cidade. Esse parâmetro pode ser obtido através da sexta sub-interface (as chamadas entre interfaces são semelhantes às chamadas entre os métodos em Java), ou seja, a aquisição de listas da cidade é suportada. Então, no exemplo, chamamos essa interface primeiro. Chamar a interface envolve a questão de solicitar recursos de rede. Aqui eu encapsula uma classe de ferramentas, incluindo dois métodos: Get e Post.
Etapa4: O código é o seguinte:
Demo1: Classe de ferramentas de acesso à rede (Encapsulate Get and Post Methods)
pacote juheapi; importar java.io.bufferedReader; importar java.io.bufferedwriter; importar java.io.inputStream; importar java.io.inputStreamReader; importar java.io.outputStreamWriter; import java.net.httpurlConnection; importection.netwrita.net; classe de ferramenta* @Author Silk**/public class PureNetutil {/*** GET Método chama diretamente o método de post* @param url rede de rede* @return retornar dados de rede*/public static string get (string url) {return post (url, null); } /*** Defina o método de postagem para obter recursos de rede. Se o parâmetro for nulo, ele será realmente definido como o método get* @param url endereço de rede* @param param parâmetro parâmetro param de valores* @return return ler dados*/ public static string post (string url, mapa param) {httpurlConnection conn = null; tente {url u = novo url (url); Conn = (httpurlConnection) u.Openconnection (); Stringbuffer sb = null; if (param! = null) {// se o parâmetro de solicitação não estiver vazio sb = new stringBuffer (); /*Uma conexão de URL pode ser usada para entrada e/ou saída. Defina o sinalizador DoOutput * como true se você pretende usar a conexão URL para saída, * false, se não. O padrão é falso.*/// O padrão é falso. O método da postagem precisa gravar parâmetros e definir True Conn.SetDoOutput (true); // Defina o método post, padrão get Conn.SetRequestMethod ("Post"); // Obtenha o fluxo de saída outputStream out = Conn.getOutputStream (); // encapsula o fluxo de saída no fluxo de saída avançado Writer BufferWriter = new BufferWriter (New OutputStreamWriter (OUT)); // encapsula os parâmetros em pares de valor-chave para (map.entry s: param.entrySet ()) {sb.append (s.getKey ()). Append ("="). Append (s.getValue ()). Append ("&"); } // Escreva os parâmetros através do fluxo de saída para writer.write (sb.deleteCharat (sb.toString (). Length ()-1) .toString ()); writer.close (); // deve ser fechado; caso contrário, pode haver um erro com parâmetros incompletos sb = null; } Connect (); // Faça uma conexão sb = new StringBuffer (); // Obtenha o código de status da conexão int recode = Conn.getResponsecode (); Leitor buffarreder leitor = null; if (recode == 200) {// retorna um fluxo de entrada que lê a partir desta conexão aberta // obtenha o fluxo de entrada da conexão inputStream em = conn.getInputStream (); // encapsular o leitor de fluxo de entrada = new BufferReader (new InputStreamReader (in)); String str = null; sb = new StringBuffer (); // Leia os dados do fluxo de entrada while ((str = leitor.readline ())! = Null) {sb.append (str) .append (System.getProperty ("line.separator")); } // Feche o fluxo de entrada leitor.close (); if (sb.toString (). length () == 0) {return null; } return sb.toString (). Substring (0, sb.toString (). Length () - System.getProperty ("line.separator"). length ()); }} catch (Exceção e) {e.printStackTrace (); retornar nulo; } finalmente {if (conn! = null) // feche a conexão Conn.Disconnect (); } retornar nulo; }} Demo2: ligue para obter o exemplo da interface da lista da cidade
pacote juheapi; importar net.sf.json.jsonArray; importar net.sf.json.jsonObject;/** * Obtenha a lista da cidade * Exemplo de chamar Java na interface nacional de previsão do tempo * dtype n string n de retorno * formato de dados: json ou xml, o padrão * a parte da chave * a tecla yc string @Athor SILK SILK ou XML * * Interface, retorne todos os dados*@return retornar dados interface Dados*/public static string excute () {string url = "http://v.juhe.cn/weather/citys?key=***A7558B2E0BEDAA19673F74A IS request data return PureNetUtil.get(url);//Use get method} /** * After calling the interface to return the data, parse the data and get the corresponding ID based on the input city name * @param cityName CityName City name * @return Return the corresponding ID */ public static String getIDBycityName(String cityName) { String result=excute();//Return the interface result and get the json format data if (resultado! = null) {jsonObject obj = jsonObject.FromObject (resultado); resultado = obj.getString ("ResultCode"); // Obtenha o código de status de retorno se (resultado! para (objeto o: arr) {// transfira arr // analisa uma string numérica json na matriz obj = jsonObject.FromObject (o.toString ()); /*Neste momento, obj é {"id": "2", "Província": "Pequim", "City": "Pequim", "Distrito": "Haidian"}*/// o registro que precisa ser encontrado para julgamento com base na cidade -chave como resultado da pista = obj.getstring ("distrito"); // impedem o nome incompleto da cidade de entrada, como a entrada da cidade de Suzhou como Suzhou, semelhante à consulta difusa se (resultado.Equals (CityName) || result.Contains (CityName)) {resultado = obj.getString ("id"); // obtendo o resultado de retorno de ident;; }}}} Retorne resultado; } public static void main (string [] args) {System.out.println (getIdByCityName ("Hong Kong")); }} Demo3: ligue para verificar o clima com base no nome/id da cidade
Pacote Juheapi; importação net.sf.json.jsonObject; /** * Consulte o clima por nome da cidade/id * @Author Silk * */public class WeatherReportByCity {/** * Get */param CityName * @return */public static string escurir (string cityName) {string url = // aqui está um exemplo de dados do formato json, então formato = 2. Tomando o nome da cidade como exemplo, o nome da cidade é passado para o chinês "http://v.juhe.cn/weather/index?cityname="+cityname+"&kekey=***A7558B2E0BEDAA19673F74A6809CE"; Return pureNetutil.get (url); // Obtenha dados de retorno através da classe da ferramenta}/*** Obtenha um exemplo de um atributo nos dados devolvidos, aqui está uma amostra de obter a temperatura de hoje* "temperatura": "8 ℃ ~ 20 ℃" TermeTerature de hoje* @param args* @return*/public string getttodayTemperatureByCity (string) @Param args* @return* resultante estático if (resultado! = null) {jsonObject obj = jsonObject.FromObject (resultado); /*Obtenha código de status de retorno*/ resultado = obj.getString ("resultadocode"); /*Se o código de status for 200, significa que os dados são retornados com sucesso*/ if (resultado! = Null && result.equals ("200")) {resultado = obj.getString ("resultado"); // No momento, existem várias chaves nos dados no resultado, e a chave pode ser percorrida para obter o atributo obj = jsonObject.FromObject (resultado); // A chave correspondente à temperatura de hoje é hoje resultado = obj.getString ("Today"); obj = jsonObject.FromObject (resultado); // A chave correspondente da temperatura de hoje é o resultado da temperatura = obj.getString ("temperatura"); resultado de retorno; }} Retornar resultado; } public static void main (string [] args) {System.out.println (getTodayTemPeratureByCity ("suzhou")); }} Demo4: Exemplo de Chamada Tipo de Clima e Interface da Lista de Representação
pacote juheapi; importação net.sf.json.jsonArray; importar net.sf.json.jsonObject;/*** Exemplo de chamar java para o tipo de clima e interface da lista de identificação* @author seda*/public classe getweathersignandtypelist {// interface, porque apenas uma chave fixa precisa ser passada, assim "http://v.juhe.cn/weather/uni?key=***A7558B2E0BEDAA19673F74A6809CE"; /*** Obtenha dados através da classe da ferramenta* @return*/public static string escape () {return pureneTutil.get (url); // chamando a classe de ferramenta para obter dados de interface}/*** obter* @param word clima correspondente* @return nome do tempo*/public static string getweatherWid (string wid) {string = result =ctio obj = jsonObject.FromObject (resultado); resultado = obj.getString ("resultadocode"); /*Obtenha o código de status de retorno*/ if (resultado! = Null && result.equals ("200")) {/*obtenha dados da matriz*/ resultado = obj.getString ("resultado"); JsonArray arr = jsonArray.FromObject (resultado); para (objeto O: arr) {// Tranquilidade Array obj = jsonObject.FromObject (O.ToString ()); // Se você percorrer os dados necessários e retornar o resultado diretamente, obtenha o valor com base na chave (wid) para determinar se é igual ao parâmetro aprovado se (obj.getString ("wid"). Igual (wid)) {resultado = obj.getString ("clima"); resultado de retorno; }}}} Retorne resultado; } public static void main (string [] args) {System.out.println (getweatherbywid ("10")); }}Etapa 5: Se o código de status não for 200 ao chamar a interface, consulte cuidadosamente as instruções do documento, o que significa retornar à etapa3: Leia o documento!
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.