使用带有&符号和浮点数的 HTTP GET 的语法

物联网 GSM https 阿杜伊诺
2021-05-29 04:44:44

我目前正在从事一个无线园艺项目,对这个领域很陌生。

我的 sht10 传感器连接到 Arduino Uno,GSM AT 命令用于无线通信。我正在使用 HTTP Get 方法在我的 Web 服务上显示传感器数据。

传感器值使用&温度和&湿度存储。

soilSensor.measure(&temperature, &humidity, &dewpoint);// sensor value

为了在 Web 服务上显示传感器值,我将值转换为字符串。

String stringOne = String(temperature)
String stringTwo = String(humidity)

但是由于'&' (pass by reference),我无法使用标准 HTTP Get 方法在 Web 服务上显示传感器数据我得到 T = 0.00 和 H = 0.00

gprsSerial.println("AT+HTTPPARA=\"URL\",\"http://xyz.com/api.aspx?Device=sensor&DeviceData=T= " +stringOne+ " ,H= " +stringTwo+ " \"");

如果我上传没有“&”的代码来存储值,我会正确显示数据。

那么,我用引用传递的值转换变量的语法有什么问题,它们必须通过 HTTP Get 发送到 Web 服务有什么区别??

2个回答

HTTP GET 请求的参数是键/值对,用与号分隔&

键和值由等号分隔。

你的使用DeviceData=T=<value>打破了这条规则。

请参阅此页面,其中说明您需要使用%3D作为=值的一部分which 。

IEDeviceData=T%3D<value>

但是,问问自己是否真的需要通过它=有关HTTP 查询字符串的详细信息,请参阅此 Wikipedia 页面

为了让 & 符号正常工作,它还需要进行 url 编码。尝试用 %26 替换它,你可以在 url 中使用它。浮点数的点应该是 %2E 才能正常工作。

可以从https://www.w3schools.com/tags/ref_urlencode.asp检查值