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

以JSON格式将数据从Arduino发布到服务器,json,post,arduino,Json,Post,Arduino,我试图通过我的Arduino设备以JSON格式将一些手动数据上传到服务器。我使用SIM800(Seduino库)进行网络连接。程序编译并运行时没有任何错误。但我的手动数据不会传输到服务器。下面是我的代码。帮我修一下 #include <gprs.h> #include<SoftwareSerial.h> char url="http://test.server.com"; GPRS client; void setup() { Serial.begin(9600);

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

#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);

}
#包括
#包括
字符url=”http://test.server.com";
GPRS客户端;
无效设置(){
Serial.begin(9600);
而(!串行);
Serial.println(“连接测试…”);
client.preInit();
而(0!=client.init()){
延迟(1000);
Serial.println(“初始错误”);
}
而(!client.join(“MYAPNAddress”);//我使用了airtelgprs.com
{  
Serial.println(“错误”);
延迟(2000年);
}
串行打印(“IP地址为”);
Serial.println(client.getIPAddress());
Serial.println(“初始成功”);
}
空缺职位()
{
char data=“{\'vehicleId\”:1,\'version\”:1,}”;
Serial.println(数据);
Serial.println(“POST/page/listener/insert HTTP/1.1”);
println(“主机:testserver.com”);
println(“内容类型:application/json;charset=utf-8”);
如果(0!=client.connectTCP(url,80)){
Serial.println(“TCP错误”);
转到停止;
}
如果(0!=client.sendTCPData(数据)){
Serial.println(“发送错误”);
转到停止;
}
停止:
client.closeTCP();
返回0;
}
void循环(){
post();
延迟(200);
}

对不起,现在还不允许评论:-)

  • “POST”和URL之间至少缺少一个空格
  • 每行后面需要\r\n(使用print(),而不是println())
  • 您需要在收割台和有效负载之间设置一条空行
  • 在某个时候,您需要一些JSON作为有效负载

谢谢你的回答。。实际上,Sim卡不是由设备启动的。。因此,数据连接尚未建立。。如果你有办法解决的话。。请建议。。