Arduino ethernet shield - Problem
Postat: 8 januari 2015, 23:41:16
Håller på med en display som ska plocka div info från nätet och visa på en display.
Kastade upp en testfil på min hemsida som den skulle gå och hämta.
Problemet är att min domän ligger ju som/på virtuel hosting och här stöter jag på problemet.
Serial Monitor:
connecting...
connected
HTTP/1.1 301 Moved Permanently
Date: Thu, 08 Jan 2015 22:26:17 GMT
Server: Apache/2.2.22 (Debian)
Location: http://geekjoan.com/ardtest.php
Content-Length: 321
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://geekjoan.com/ardtest.php">here</a>.</p>
<hr>
<address>Apache/2.2.22 (Debian) Server at http://www.geekjoan.com Port 80</address>
</body></html>
disconnecting.
Om jag gör anropet till google som i original exemplet är så funkar det fint.
Först hade jag tagit bort HTTP/1.1 ur raden client.println("GET /ardtest.php HTTP/1.1");
Detta för att inte få med headers etc, utan bara få det som faktiskt kommer upp på skärmen om man går till den sidan.
Detta trodde webhosting stället ställde till det för att då såg dom att det blev HTTP/1.0 och servern kräver 1.1.
Så frågan är om arduinon ändra detta till 1.1 när jag skriver 1.1 bakom som ovan? Eller kör den på med 1.0 i alla fall? Hur kan man ta reda på detta? Att ändra till 1.1 hjälpte inte, och det hjälper ju inte heller till eftersom jag inte vill ha med headern.
Kan jag komma runt detta på något sätt eller finns det någon webbaserad gratisservice man kan använda sig av för detta ändamål?
Helst vill jag ju använda min "egna" server om det går.
Kastade upp en testfil på min hemsida som den skulle gå och hämta.
Kod: Markera allt
...
char server[] = "www.geekjoan.com";
...
client.println("GET /ardtest.php HTTP/1.1");
client.println("Host: www.geekjoan.com");
..
Koden i sin helhet(standard exempel WebClient):
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.geekjoan.com";
IPAddress ip(192,168,0,177);
EthernetClient client;
void setup() {
Serial.begin(9600);
while (!Serial) {
;
}
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac, ip);
}
delay(1000);
Serial.println("connecting...");
if (client.connect(server, 80)) {
Serial.println("connected");
client.println("GET /ardtest.php HTTP/1.1");
client.println("Host: www.geekjoan.com");
client.println("Connection: close");
client.println();
}
else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
while(true);
}
}
Serial Monitor:
connecting...
connected
HTTP/1.1 301 Moved Permanently
Date: Thu, 08 Jan 2015 22:26:17 GMT
Server: Apache/2.2.22 (Debian)
Location: http://geekjoan.com/ardtest.php
Content-Length: 321
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://geekjoan.com/ardtest.php">here</a>.</p>
<hr>
<address>Apache/2.2.22 (Debian) Server at http://www.geekjoan.com Port 80</address>
</body></html>
disconnecting.
Om jag gör anropet till google som i original exemplet är så funkar det fint.
Först hade jag tagit bort HTTP/1.1 ur raden client.println("GET /ardtest.php HTTP/1.1");
Detta för att inte få med headers etc, utan bara få det som faktiskt kommer upp på skärmen om man går till den sidan.
Detta trodde webhosting stället ställde till det för att då såg dom att det blev HTTP/1.0 och servern kräver 1.1.
Så frågan är om arduinon ändra detta till 1.1 när jag skriver 1.1 bakom som ovan? Eller kör den på med 1.0 i alla fall? Hur kan man ta reda på detta? Att ändra till 1.1 hjälpte inte, och det hjälper ju inte heller till eftersom jag inte vill ha med headern.
Kan jag komma runt detta på något sätt eller finns det någon webbaserad gratisservice man kan använda sig av för detta ändamål?
Helst vill jag ju använda min "egna" server om det går.