2016-07-21 61 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();