2017-04-07 96 views
-2

我想調用一個嵌套API來獲取Arduino中使用C代碼的室溫。從Arduino調用嵌套API

當我打電話使用郵遞員的API,我得到完美的迴應:

enter image description here

然而,當我寫的代碼來獲取溫度數據,我得到如下回應:

請求發送 請求是HTTP/1.1 400錯誤請求。

這裏是我的代碼,任何人都可以幫我什麼地方錯了我的要求:

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"); 
    } 

感謝,

沙巴

+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 = 「/」

感謝, 沙巴