Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Identifisering av MIME type og fortelle klienten om dette kan også være litt vrient. Vi har ikke funnet noen tutorials som gjør dette enkelt å forstå eller enkelt å reprodusere, derfor har vi bakt dette inn i biblioteket vårt, basert på filnavnet som etterspørres.

Biblioteket

...

Vi har lagt ut et bibliotek som skal gjøre det mye enklere å lage en web server som gir ut filer. Filene leses i utgangspunktet rett fra SD kortleseren, men vi har lagt med muligheten for å filtrere og endre forespørsler og svar. Vi har prøvd å minimere minnebruken til biblioteket, men bruker allikevel rundt 1300 byte. Dette gjør at du bare har 200-400 byte du kan bruke i tillegg til biblioteket. Brukes noe særlig mer enn dette blir Arduino ustabil, den henger, får uforklarlige omstarter eller lignende.

Biblioteket vårt er beregnet til å starte en web server som gir ut filer rett fra et SD kort. I tillegg kan du filtrere forespørsler, eller til og med bruke filene som templates hvor du endrer deler av teksten som blir levert til klienten. Eksemplene vi har lagt ut er:

  • PLabExamples/examples/17.Web/BasicHttpFileServer - Setter opp en server med port 80 som deler ut alle filene som er på SD kortet.
  • PLabExamples/examples/17.Web/HttpFileServerFilters - Setter opp en server som gir all debug informasjon via filter. Fungerer som dokumentasjon på alle filtreringsmuligheten du har med dette biblioteket.
  • PLabExamples/examples/17.Web/HttpFileServerGetQuery - Viser hvordan du kan lese ut informasjon som har blitt sendt med GET metoden. Slike forespørsler forekommer fra blant annet AJAX og HTML form (når metoden er definert som GET).
  • PLabExamples/examples/17.Web/HttpFileServerFilterTest - Leter etter teksten "test" i alle filer som blir etterspurt, og legger til " INSERTED BY FILTER " rett etter denne teksten. Dette eksempelet kan brukes som utgangspunkt hvis du vil lage en template. For eksempel kan du velge ut ett eller flere tegn (eller kombinasjoner) som ikke er naturlig i noen av filene (for eksempel er "$" lite brukt) og sette inn egen tekst på dette punktet. Bruker du en slik strategi kan det være greit å følge med hvilken fil(type) du svarer: når bilder oversettes til tekst kan det bli mange spesielle tegnkombinasjoner av seg selv.

I biblioteket har vi lagt inn støtte for følgende feilmeldinger, en liste som kan utvides:

KodeBeskjedBeskrivelse
400Bad RequestKlienten hadde syntaksfeil i forespørselen.
404Not FoundFant ikke ressurs, for eksempel fantes ikke filen på SD kortet
414Request URI Too LongKlarte ikke å holde hele den etterspurte adressen. Som standard i biblioteket vårt skjer dette når den etterspurte URI-en er over 79 tegn.
500Internal Server ErrorNår det oppstår en uforutsett feil i serveren.
501Not ImplementedAlle forespørsler som ikke bruker GET eller HEAD metode vil trigge denne.
505HTTP Version Not SupportedHTTP finnes i flere varianter. Denne serveren støtter kun 1.x.

Filtyper, og da innhold, gjenkjennes av biblioteket basert på filnavnavslutningen. Det vil si det som kommer etter siste punktum i filen (heter filen index.html, snakker vi da om html). De MIME typene biblioteket gjenkjenner er:

FiletternavnMIME type
htmtext/html
htmltext/html
xmlapplication/xml
csstext/css
jsapplication/javascript
jsonapplication/json
jpgimage/jpeg
jpegimage/jpeg
pngimage/png
gifimage/gif
svgimage/svg+xml