I am getting a HTTP 301 error that makes no sense to me when I try to do a GET request. The reason it makes no sense is that the Location: piece in the response header is identical to the URL I am sending in the GET request.
Here is the code I am using:
/*
* Created by ArduinoGetStarted.com
*
* This example code is in the public domain
*
* Tutorial page: https://arduinogetstarted.com/tutorials/arduino-http-request
*/
#include <SPI.h>
#include <Ethernet.h>
// replace the MAC address below by the MAC address printed on a sticker on the Arduino Shield 2
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetClient client;
int HTTP_PORT = 80;
String HTTP_METHOD = "GET";
//char HOST_NAME[] = "maker.ifttt.com";
char HOST_NAME[] = "docs.google.com";
//String PATH_NAME = "/trigger";
String PATH_NAME = "/forms/d/e/1FAIpQLSeGskK9trCex4EPtS99ZRlVyXKUhTugSQUhdw3-Ugkhr19awQ/formResponse";
//String queryString = "?value1=26&value2=70";;
String queryString = "?usp=pp_url&entry.879050922=FROMforum&submit=Submit";;
void setup() {
Serial.begin(9600);
// initialize the Ethernet shield using DHCP:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to obtaining an IP address using DHCP");
while(true);
}
// connect to web server on port 80:
if(client.connect(HOST_NAME, HTTP_PORT)) {
// if connected:
Serial.println("Connected to server");
// make a HTTP request:
// send HTTP header
client.println(HTTP_METHOD + " " + PATH_NAME + queryString + " HTTP/1.1");
client.println("Host: " + String(HOST_NAME));
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("Accept: */*");
client.println("Connection: close");
client.println(); // end HTTP header
while(client.connected()) {
if(client.available()){
// read an incoming byte from the server and print it to serial monitor:
char c = client.read();
Serial.print(c);
}
}
// the server's disconnected, stop the client:
client.stop();
Serial.println();
Serial.println("disconnected");
} else {// if not connected:
Serial.println("connection failed");
}
}
void loop() {
}
And here is the output/response header as printed in the serial monitor:
Connected to server
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Date: Sun, 11 Apr 2021 12:42:21 GMT
Location: https://docs.google.com/forms/d/e/1FAIpQLSeGskK9trCex4EPtS99ZRlVyXKUhTugSQUhdw3-Ugkhr19awQ/formResponse?usp=pp_url&entry.879050922=FROMforum&submit=Submit
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: frame-ancestors 'self'
X-XSS-Protection: 1; mode=block
Server: GSE
Set-Cookie: NID=213=QFR3lHYlQXXstJ24SJ6fQeUPCtXseIbclqRDsI8WbhZsVJ3zg57gTMY9OXdOJ10RIF74UqU2-GLhLQM_LKaGV5RaSLywwb7IgW4Vh07cS2V02Lgc7wRIbLdYIuqNqibn2oezDJ-hWMbEjCtcU8CnWhGbqmxOTJww__WbnFE353I; expires=Mon, 11-Oct-2021 12:42:21 GMT; path=/; domain=.google.com; HttpOnly
Accept-Ranges: none
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked
161
<HTML>
<HEAD>
<TITLE>Moved Permanently</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Moved Permanently</H1>
The document has moved <A HREF="https://docs.google.com/forms/d/e/1FAIpQLSeGskK9trCex4EPtS99ZRlVyXKUhTugSQUhdw3-Ugkhr19awQ/formResponse?usp=pp_url&entry.879050922=FROMARDUINOforsure&submit=Submit">here</A>.
</BODY>
</HTML>
Clearly its connecting, I just don't understand why I am getting a 301 error but the Location is no different than what I put in the request.
I am using a mega2560 with a W5100 ethernet shield.