Rails arduino 读取 json 时的问题。

zix · 2016年08月01日 · 最后由 zix 回复于 2016年08月02日 · 3017 次阅读

rails 这边是 5.0,直接用支架构建了一个 ticket。 然后用 arduino GET /tickets/2.json 然后显示所有 get 到的内容

HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Type: application/json; charset=utf-8
ETag: W/"5aed621cf435d5f69eba24a90f9751b2"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: bc393323-d664-4393-b113-c538252a0c1e
X-Runtime: 0.006484
Transfer-Encoding: chunked

d2
{"id":3,"name":"amy","seat_id_seq":null,"address":"","price_paid":null,"email_address":"","created_at":"2016-08-01T02:53:29.688Z","updated_at":"2016-08-01T02:53:29.688Z","url":"http://localhost/tickets/3.json"}
0

我不明白 json 前的 d2 和后面的 0 是什么? 从哪里能忽略这些信息不要发送?

请说清楚你怎么调用的,中间有什么特别的东西,一个 JSON 不回无缘无故多出字符的

此外 arduino 在社区里面本身就是比较冷门的话题,所以你需要详细描述你的请求过程

#1 楼 @huacnlee 已修改 rails 这边是 5.0,直接用支架构建了一个 ticket。 然后用 arduino GET /tickets/2.json 然后显示所有 get 到的内容

建议你把 Arduino 端的代码贴出来。0xD2 = 210 应该是字符串长度,0 估计是函数返回值。

/* Web client

This sketch connects to a website (http://www.google.com) using a WiFi shield.

This example is written for a network using WPA encryption. For WEP or WPA, change the Wifi.begin() call accordingly.

This example is written for a network using WPA encryption. For WEP or WPA, change the Wifi.begin() call accordingly.

Circuit:

  • WiFi shield attached

created 13 July 2010 by dlf (Metodo2 srl) modified 31 May 2012 by Tom Igoe */

#include #include

char ssid[] = "yourNetwork"; // your network SSID (name) char pass[] = "secretPassword"; // your network password (use for WPA, or use as key for WEP) int keyIndex = 0; // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: //IPAddress server(74,125,232,128); // numeric IP for Google (no DNS) char server[] = "www.google.com"; // name address for Google (using DNS)

// Initialize the Ethernet client library // with the IP address and port of the server // that you want to connect to (port 80 is default for HTTP): WiFiClient client;

void setup() { //Initialize serial and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only }

// check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi shield not present"); // don't continue: while (true); }

// attempt to connect to Wifi network: while (status != WL_CONNECTED) { Serial.print("Attempting to connect to SSID: "); Serial.println(ssid); // Connect to WPA/WPA2 network. Change this line if using open or WEP network: status = WiFi.begin(ssid, pass);

// wait 10 seconds for connection: delay(10000); } Serial.println("Connected to wifi"); printWifiStatus();

Serial.println("\nStarting connection to server..."); // if you get a connection, report back via serial: if (client.connect(server, 80)) { Serial.println("connected to server"); // Make a HTTP request: client.println("GET /search?q=arduino HTTP/1.1"); client.println("Host: www.google.com"); client.println("Connection: close"); client.println(); } }

void loop() { // if there are incoming bytes available // from the server, read them and print them: while (client.available()) { char c = client.read(); Serial.write(c); }

// if the server's disconnected, stop the client: if (!client.connected()) { Serial.println(); Serial.println("disconnecting from server."); client.stop();

// do nothing forevermore: while (true); } }

void printWifiStatus() { // print the SSID of the network you're attached to: Serial.print("SSID: "); Serial.println(WiFi.SSID());

// print your WiFi shield's IP address: IPAddress ip = WiFi.localIP(); Serial.print("IP Address: "); Serial.println(ip);

// print the received signal strength: long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); }

#3 楼 @southwolf 估计是 代码很简单 应该是发送的长度值

需要 登录 后方可回复, 如果你还没有账号请 注册新账号