Я не могу заставить свой код установить целевую температуру (в Android). Код, показанный ниже, получает статус OK (200) вместе с текущей температурой в качестве полезной нагрузки. Я ожидал получить новую температуру, которую я написал (65 градусов по Фаренгейту). Я использую URL-адрес:
https://developer-api.nest.com/devices/thermostats/THERMOSTAT-ID/target_temperature_f?auth=AUTH CODE
с моим идентификатором термостата и кодом аутентификации на месте. У меня также есть права на чтение и запись для моего клиента. Когда я выполняю аналогичный запрос в имеющемся у меня расширении Chrome, температура на термостате устанавливается правильно. Может ли кто-нибудь определить, что мне здесь не хватает? Закомментированный код показывает пару вещей, которые я пробовал.
Спасибо.
InputStream is = null;
String result = "";
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPut httpPut = new HttpPut(url);
httpPut.addHeader("Content-Type", "application/json");
httpPut.addHeader("Accept", "application/json");
//httpPut.addHeader("Connection", "keep-alive");
httpclient.getParams().setBooleanParameter("http.protocol.expect-continue",false);
//value.setContentType("application/json");
httpPut.setEntity(new StringEntity("65");
HttpResponse response = httpclient.execute(httpPut);
HttpEntity entity = response.getEntity();
is = entity.getContent();
int statusCode = response.getStatusLine().getStatusCode();
Log.d("StatusCode",Integer.toString(statusCode));
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
// Convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
Log.d("Result",result);
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}