2017-04-07 13 views
-2

ArduinoでCコードを使用して室温を取得するためにネストAPIを呼び出そうとしています。ArduinoからネストAPIを呼び出す

私は郵便配達を使用して、APIを呼び出すと、私は完璧な応答を取得:

要求:私は温度データを取得するためにコードを書くとき

enter image description here

はしかし、私は次のような応答を取得します送信されたメッセージは です。要求はHTTP/1.1 400 Bad Requestです。ここで

誰もが私の要求と間違っているものを私を助けることができる、私のコードです:

const char* ssid = "linksys"; 
const char* password = "XXXXX"; 

const char* host = "firebase-apiserver07-tah01-iad01.dapi.production.nest.com"; // "developer-api.nest.com"; // "api.github.com"; 
const int httpsPort = 9553; //443 9553; 
String url = ""; 


....... 
....... 
....... 

if (!client.connect(host, httpsPort)) { 
    Serial.println("connection failed"); 
    return; 
    } else { 
     client.print(String("GET ") + url + " HTTP/1.1\r\n" + 
       "Host: " + host + "\r\n" + 
       "Authorization: Bearer c.SbsgvTBcsJREMOVED_CODE_FOR_SECURITY_REASON\r\n" + 
       "Content-Type: application/json\r\n\r\n" 
       ); 

     Serial.println("request sent"); 
    } 

おかげで、

Shab

+1

1)は、テキストの画像を投稿しないでください。 2)ArduinoはCではなく、まったくC++ではありません。 – Olaf

+0

おそらく、安全な接続が必要なためです。 –

答えて

1

あなたは400を取得している場合は、あなたがそれをチェックする必要がありますURLは実際には/に設定されています。あなたのコードには、url変数の値が表示されていません。

+0

プロモーションレスポンスのおかげでFemiに感謝し、コードのその部分を見逃してしまって申し訳ありません。 urlは空の文字列に設定されています。なぜなら、 "/"を置くと応答が得られないからです。悪い要求でもない。 – shabk

+0

@ user1952378よく、空の文字列は間違って間違っています。それは構文的に有効なHTTP要求ではないものを出力します。「悪い要求」を説明するでしょう:) – hobbs

+0

@hobbs、私は理解しますが、なぜ '/'を置くのに応答がないのでしょうか? – shabk

0

私のケースでは、応答を受け取るのに時間がかかったと考えました。私はちょうど応答を得るために待たなければならなかった。そして、必ずURLのために、 "/"

文字列のURLである必要があります= "/"

おかげで、 Shab