2016-07-21 146 views
1

我使用Arduino YUNIoT項目。Arduino YUN Rest Api HTTP Post

我有需要標題和正文的web服務,我想從arduino發佈數據。

默認HttpClient庫支持put,get和delete方法,但不支持post方法。

任何建議都會很棒。謝謝。

+0

請閱讀[這(如何問)(http://stackoverflow.com/help/how-to-問)和 [this(mcve)](http://stackoverflow.com/help/mcve), 這些將幫助您從社區獲得更多更好的答案。 – Bonatti

回答

0

您可以使用Process類通過curl(它是ArduinoYÚN上的OpenWRT的一部分)發送POST。從http://starter-kit.nettigo.eu/2014/arduino-yun-sending-data-thingspeak-post/

例子:

void postToThingSpeak(String key, float value[]) { 
    Process p; 
    String cmd = "curl --data \"key="+key; 
    for (int i=0;i<ARRAY_SIZE;i++) { 
    cmd = cmd + "&field"+ (i+1) + "=" + value[i]; 
    } 
    cmd = cmd + "\" http://api.thingspeak.com/update"; 
    p.runShellCommand(cmd); 
    Console.println(cmd); 
    p.close(); 
} 
0

也許你有一個老版本的大橋圖書館。我在HttpClient.h看代碼的支持POST(1.6.3版本):

unsigned int get(String &url); 
unsigned int get(const char * url); 
void getAsynchronously(String &url); 
void getAsynchronously(const char * url); 
unsigned int post(String &url, String &data); 
unsigned int post(const char * url, const char * data); 
void postAsynchronously(String &url, String &data); 
void postAsynchronously(const char * url, const char * data); 
unsigned int patch(String &url, String &data); 
unsigned int patch(const char * url, const char * data); 
void patchAsynchronously(String &url, String &data); 
void patchAsynchronously(const char * url, const char * data); 
unsigned int put(String &url, String &data); 
unsigned int put(const char * url, const char * data); 
void putAsynchronously(String &url, String &data); 
void putAsynchronously(const char * url, const char * data); 
void setHeader(String &header); 
void setHeader(const char * header); 
boolean ready(); 
unsigned int getResult(); 
void noCheckSSL(); 
void checkSSL();