我正试图通过Arduino发布一个json数据。当我尝试这个code.ı将发送一个json数据与QueryString.Ifı尝试此代码服务器用错误的QueryString格式回答我。这意味着是我已连接到服务器,服务器获取了我的数据。
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("POST /URL?query=jsondata HTTP/1.1");
client.println("Host: **.**.**.**");
client.println("Connection: close\r\nContent-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.println(PostData.length());
client.println();
client.println(PostData);
}
但我的主要计划是使用querystring发送我的json数据。如果ı尝试此代码;
client.println("POST /URL?query={request:{Header:{Username:kullaniciAdi,Password:123456},Item:{Serial:ABC123QWE,Data:100, DateOn:23/11/1986 15:45:24}}} HTTP/1.1");
我收到HTTP错误400.请求格式错误。
任何人都有任何想法?
答案 0 :(得分:1)
是的,您的URI包含空格,可能包含其他字符以混淆帖子请求的格式。您需要对这些字符进行编码。
据我所知,Arduino标准库不包含任何形式的urlEncode方法,这在其他语言和库中很常见,因此您必须创建自己的或寻找一个。
您的结果代码如下:
String request = "/URL?query={request:{Header:{Username:kullaniciAdi,Password:123456},Item:{Serial:ABC123QWE,Data:100, DateOn:23/11/1986 15:45:24}}}";
String encRequest = uriEncode(request); // need to write your own method for this...
String post = "POST " + encRequest + " HTTP/1.1");
client.println( post);
关于创建uriEncode函数的一些讨论在Arduino Forum上,并且似乎还有working method on hardwarefun.com