将数据从Arduino发布到JSON格式的服务器

时间:2017-01-17 04:28:34

标签: json post arduino

我尝试通过我的Arduino设备以JSON格式将一些手动数据上传到服务器。我使用SIM800(Seeduino库)进行网络连接。程序编译并运行,没有任何错误。但我的手动数据不会传输到服务器。以下是我的代码。帮我解决这个问题。

#include <gprs.h>
#include<SoftwareSerial.h>

char url="http://test.server.com";

GPRS client;

void setup() {
Serial.begin(9600);
while(!Serial);
Serial.println("Connection Test...");
client.preInit();
while(0!=client.init()){
  delay (1000);
  Serial.println("init error");
  }
  while(!client.join("MYAPNAddress"));//I used airtelgprs.com
  {  
  Serial.println("error");
  delay(2000);
  }
  Serial.print("IP Address is");
  Serial.println(client.getIPAddress());
  Serial.println("INit succeess");

  }
  void post()
  {
   char data="{  \"vehicleId\" : 1,  \"version\" : 1, }";
   Serial.println(data);
   Serial.println("POST/page/listener/insert HTTP/1.1");
   Serial.println("HOST:testserver.com");
   Serial.println("Content-Type: application/json;charset=utf-8");
   if(0!=client.connectTCP(url,80)){
    Serial.println("TCP error");
    goto STOP;
   }
   if(0!=client.sendTCPData(data)){
    Serial.println("sending error");
    goto STOP;
   }
   STOP:
   client.closeTCP();
   return 0;
  }
 void loop() {
  post();
  delay(200);

}

1 个答案:

答案 0 :(得分:0)

抱歉,暂不发表评论: - )

  • &#34; POST&#34;之间至少缺少一个空格。和URL
  • 你需要\ r \ n在每一行之后(使用print(),而不是println())
  • 您需要并在标头和有效负载之间留空线
  • 在某些时候,你需要一些JSON作为有效载荷