Cómo utilizar la interfaz API de Baidu Weather Forecast
Dirección de la aplicación Baidu API Key: /apiconsole/key
Crear una aplicación como se muestra en la figura:?
Obtener la clave API después del envío como se muestra en la figura:?
Ejemplo de interfaz:/telematics/v3/weather? location=Nanchang&output=json&ak=Su clave API&mcode=Su firma digital SHA1;com.example.administrator.jsontest (nombre del paquete)
Descripción del parámetro de interfaz
Tipo de parámetro
p >Nombre del parámetro
¿Es obligatorio?
Descripción detallada
Ubicación de la cadena verdadera Ingrese el nombre de la ciudad o la latitud y longitud. El nombre de la ciudad es tal. como Beijing o 131, y el formato de latitud y longitud es lng, coordenadas lat, como: ubicación = 116.305145,39.982368, el valor nacional es todo, devuelve las condiciones climáticas de las capitales provinciales y regiones autónomas, Hong Kong, Macao y Taiwán; y los pronósticos meteorológicos de varias ciudades están separados por "|", como: ubicación = 116.305145,39.982368|123.342323,36238945 |...
Salida de cadena falsa Formato de datos de salida, el formato predeterminado es xml, cuando la salida se establece en json y la salida tiene formato de datos json
Cadena coord_type false Coordenadas del parámetro de solicitud Tipo, el valor predeterminado son las coordenadas de latitud y longitud gcj02. Los valores permitidos son bd09ll, bd09mc, gcj02, wgs84
Datos JSON devueltos
{
"error":0,
"status":"éxito",
"fecha":"2016-03-05",
"resultados":[
{ p> p>
"currentCity":"Pekín",
"pm25":"144",
"index":[
{ p>
"title": "Ropa",
"zs": "Más frío",
"tipt": "Índice de ropa",
"des":"Se recomienda usar abrigos y suéteres gruesos. Las personas mayores y los enfermos deben usar abrigos, abrigos de lana y suéteres de lana."},
{
"title":"Lavado de Autos",
"zs":"No apto",
"tipt":"Índice de Lavado de Autos",
" des": "No es adecuado lavar su automóvil. Habrá arena o polvo en las próximas 24 horas. Si lava su automóvil durante este período, se cubrirá fácilmente con polvo nuevo."},
{
" title":"Turismo",
"zs":"General",
"tipt":"Índice de turismo",
"des":" Los vientos ligeramente fuertes, la arena que sopla o el polvo flotante tendrán cierto impacto en la visibilidad y la calidad del aire. Preste atención a la seguridad del tráfico y tome las medidas adecuadas de prevención del polvo cuando viaje.
"},
{
"title":"Frío",
"zs":"Fácil",
" tipt ":"Índice de frío",
"des":"La diferencia de temperatura entre el día y la noche es grande y el viento es fuerte, lo que facilita el resfriado. Preste atención al ponerse o quitarse ropa. adecuadamente y reforzar la autoprotección para evitar resfriarse. "},
{
"title":"Deportes",
"zs":"Menos adecuado",
" tipt":"Índice de ejercicio",
"des":"Si sopla arena o polvo, se recomienda dejar de practicar deportes al aire libre y optar por hacer ejercicio en interiores para evitar inhalar más arena y polvo, lo cual es perjudicial para la salud. "},
{
"title":"Intensidad UV",
"zs":"Más débil",
" tipt":"Índice de intensidad ultravioleta",
"des":"Es un clima de radiación ultravioleta débil y no requiere protección especial. Si permanece al aire libre durante mucho tiempo, se recomienda aplicar productos de cuidado de la piel con protección solar con SPF entre 8 y 12.
"}
? ],
?"weather_data":[
?{
?"date":"Sábado 03 de enero 05 (tiempo real: 12 ℃)", ?"dayPictureUrl":"/images/weather/day/fuchen.png",
"nightPictureUrl":"/images/weather/night/qing png. ",
?"weather":"El polvo se ha vuelto soleado",
?"wind":"Viento del norte nivel 4-5",
? "temperatura":"12 ~ -1℃"},
?{
?"date":"Domingo",
"dayPictureUrl": "/images/weather/day/duoyun.png",
"nightPictureUrl":"/images/weather/night/duoyun.png",
?"weather":" Nublado",
?"viento":"Brisa",
?"temperatura":"10 ~ -3℃"},
?{
?"date":"Lunes", "dayPictureUrl":"/images/weather/day/duoyun.png",
"nightPictureUrl":"/images/weather/night /yin.png",
?"weather":"Nublado a nublado",
?"viento":"Brisa",
?"temperatura ":"13 ~ 2℃"},
?{
?"date":"Martes", "dayPictureUrl":"/images/weather/day/yin.png ",
"nightPictureUrl":"/images/weather/night/duoyun.png",
?"weather":"Nublado",
? "wind":"Nivel de viento del norte 3-4",
?"temperature":"6 ~ -1℃"}
?]}]}
3. ?Escribamos una demostración, el código es el siguiente:
paquete com.example.administrator.jsontest;
clase pública MainActivity extiende la actividad {
botón Botón privado;
TextView privado textView;
Controlador privado controlador = nuevo Controlador() {
@Override
público mango vacío
Mensaje(Mensaje msg) {
switch (msg.what) {
caso 0:
String re = (String) msg.obj;
textView.setText(re);
romper;
}
}
};
@Override
protected void onCreate(Bundle saveInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
botón = (Botón) findViewById(R.id.button);
textView = (TextView) findViewById(R.id.textView);
botón. setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("TAG", "Clic Botón");
sendRequestWithHttpClient();
}
});
}
vacío privado sendRequestWithHttpClient() {
new Thread(new Runnable() {
@Override
public void run() {
conexión HttpURLConnection = null;
prueba {
URL url = nueva URL("/telematics/v3/weather?location=Nanchang&output=json&ak=8ixCCFzlBB617YX7tONI2P5B&mcode=1C:6B:42:33 :E8 :A6:DC:A2:11:6E:26:EC:84:BD:42:E3:8E:6B:57:9A;com.example.administrator.jsontest");
conexión = (HttpURLConnection) url.openConnection();
conexión.setRequestMethod("GET");
conexión.setConnectTimeout(5000);
conexión
ection.setReadTimeout(5000);
InputStream in = connect.getInputStream();
Lector BufferedReader = new BufferedReader(new InputStreamReader(in));
Respuesta de StringBuilder = new StringBuilder();
Línea de cadena;
while ((line = lector.readLine()) != null) {
respuesta. append(línea);
}
Log.i("TAG", respuesta.toString()); parseJSONObjectOrJSONArray(response.toString());
} captura (MalformedURLException e) {
e.printStackTrace();
} captura (IOException e) {
e.printStackTrace(); p> p>
}
}
}).start();
}
//Analizar datos JSON p>
private void parseJSONObjectOrJSONArray(String jsonData) {
prueba {
String count = "";
JSONObject jsonObject = new JSONObject( jsonData) ;
JSONArray jsonArray = jsonObject.getJSONArray("resultados");
if (jsonArray.length() > 0) {
Objeto JSONObject = jsonArray. getJSONObject(0);
String ciudad = object.optString("currentCity");
JSONArray array = object.getJSONArray("weather_data");
for (int i = 0; i < array.length(); i++) {
JSONObject jsonObject1 = array.getJSONObject(i);
String dateDay =
jsonObject1.optString("fecha");
String tiempo = jsonObject1.optString("tiempo");
Cadena viento = jsonObject1.optString("viento");
String temperatura = jsonObject1.optString("temperatura");
recuento = recuento +"\n"+ fechaDía + " " + clima + " " + viento + " " + temperatura;
Log.i("AAA",count);
}
Mensaje mensaje = nuevo Mensaje();
mensaje.what = 0;
mensaje.obj = recuento;
handler.sendMessage(mensaje);
}
} captura (JSONException e ) {
e.printStackTrace();
}
}
}
4.? Los resultados son los siguientes:?