向Google应用引擎发出GET请求

时间:2017-10-27 15:33:30

标签: http google-app-engine get arduino

我正在尝试使用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"在浏览器中有效。

为什么我会收到此错误以及如何解决?

2 个答案:

答案 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.0GET位于同一行,而不是单独行。
  • Host: HTTP标头不应包含协议https。在读取这些标头之前,已经处理过SSL或非SSL,因此不需要它们(因此可能只会造成麻烦)。
相关问题