コードで目標温度を設定できません (Android の場合)。以下に示すコードは、ペイロードとして現在の温度とともに OK ステータス (200) を受け取ります。私が書いた新しい温度 (65°F) を受け取っているはずです。私はURLを使用しています:
https://developer-api.nest.com/devices/thermostats/THERMOSTAT-ID/target_temperature_f?auth=AUTH CODE
サーモスタット ID と認証コードを配置します。また、クライアントの読み取りと書き込みのアクセス許可も持っています。私が持っている 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());
}