我正在尝试使用PHP从Arduino向GAE发出get请求。
Arduino代码:
#define DST_IP "https://myservice-183310.appspot.com" // my gae address
String cmd;
Wifi.println("AT+CIPMUX=0");
cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += DST_IP;
cmd += "\",80\r\n";
Wifi.println(cmd);
if(Wifi.find("OK")){
Serial.println("LINK SUCCESS");
}
else{
Serial.println("LINK ERROR");
}
String user_info="GET /register.php?nfc_id=";
user_info+=nfc_id;
user_info+="\r\nHTTP/1.0 HOST: ";
user_info+=DST_IP;
user_info+="\r\n\r\n";
cmd="AT+CIPSEND=";
cmd+=String(user_info.length());
Wifi.println(cmd);
Wifi.print(user_info);
GAE中的app.yaml:
runtime: php55
api_version: 1
handlers:
- url: /register.php
script: register.php
我收到404错误消息,但"https://myservice-183310.appspot.com/register.php?nfc_id=ooo"
在浏览器中有效。
为什么我会收到此错误以及如何解决?
答案 0 :(得分:0)
我认为问题是" HTTPS"协议,尝试使用" HTTP"。
答案 1 :(得分:0)
有效的HTTP请求应如下所示:
GET /request.php?nfc_id=MY_NFC_ID HTTP/1.0
Host: myservice-183310.appspot.com
我没有Arduino编码器,但看起来你发送的请求是:
GET /register.php?nfc_id=MY_NFC_ID
HTTP/1.0 HOST: https://myservice-183310.appspot.com
注意事项
HTTP/1.0
与GET
位于同一行,而不是单独行。Host:
HTTP标头不应包含协议https
。在读取这些标头之前,已经处理过SSL或非SSL,因此不需要它们(因此可能只会造成麻烦)。