NAVE CAMBIO TARGET_TEMRETRETRE_F: ¿Cómo usar JAVA HTTP PUT PARA CONFIGURAR TEMPERATURA DE TIGO DEL TERMOSTA DE NEST EN EL CÓDIGO DE ANDROID?
-
02-01-2020 - |
Pregunta
Nest Cambiar Target_Temperature_F: ¿Cómo usar Java HTTP PUTE PARA CONFIGURAR LA TEMPERATURA DE TARJERA DEL TERMOSTAT DE NEST BY ANDROID CODE?
Solución
Puede usar httpclient o httpurlconnection para llamar a una API de reposo de Android.Aquí hay un ejemplo usando httpurlconnection.
Nota: se recomienda que almacene la URL de redirección por token de usuario / acceso y reúnelo para todas las llamadas posteriores para ese usuario.
- Supongamos aquí que la base para empezar es https://developer-api.nest.com/
-
Si el código de retorno de la URLConnection es un 307 (redireccionando), luego caché la ubicación y usa para emitir una solicitud de PUT.(Tenga en cuenta que la caché aquí indica un caché / concurrente global de algún tipo)
public static int setThermostatTemperatureF(int temperatureF, String base, String thermostatId, String accessToken) throws IOException { try { String tChangeUrl = String.format("%s/devices/thermostats/%s/target_temperature_f?auth=%s", base, thermostatId, accessToken); URL url = new URL(tChangeUrl); HttpsURLConnection ucon = (HttpsURLConnection) url.openConnection(); ucon.setRequestProperty("Content-Type", "application/json"); ucon.setRequestMethod("PUT"); ucon.setDoOutput(true); // Write the PUT body OutputStreamWriter writer = new OutputStreamWriter(ucon.getOutputStream()); writer.append(Integer.toString(temperatureF)); writer.flush(); int responseCode = ucon.getResponseCode(); if (responseCode == 307) { // temporary redirect // cache the URL for future uses for this User String redirectURL = ucon.getHeaderField("Location"); URI u = new URI(redirectURL); StringBuilder baseUrl = new StringBuilder(u.getScheme()) .append("://").append(u.getHost()); if (u.getPort() != 0) { baseUrl.append(":").append(u.getPort()); } baseUrl.append("/"); cache.put(accessToken, baseUrl.toString()); return setThermostatTemperatureF(temperatureF, baseUrl.toString(), thermostatId, accessToken); } else { return responseCode; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (URISyntaxException e) { e.printStackTrace(); } return -1;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow