User-Agent: vim

Den første store browser var Mosaic, dernæst kom Netscape og Internet Explorer. Netscape blev til Mozilla, blev til Firefox, blev til Iceweasel og endelig kom Google Chrome. Min nyeste HTTP-client hedder vim - ja, gode gamle vim.

Selvfølgelig har jeg ikke erstattet min grafiske browser med vim, men det er blevet er fast værktøj til at debugge servere for HTTP-baserede protokoller. I gamle dage kunne man bare telnet'e til serverens port 80, skrive sin ret enkle HTTP-forspørgsel og så vente på svaret.

Men alt det her nymodens XML over HTTP, keep-alive og pipelining bliver det så pokkers svært. Alene det at skrive XML i hånden og uden gode redigeringsmuligheder er svært nok, men med keep-alive skal man også på forhånd bestemme sig for hvor mange bytes ens XML kommer til at fylde.

Måske kan man vælge at kaste en masse smarte værktøjer til at genrere HTTP-forspørgsler efter problemet, men helt lav-teknologisk har jeg valgt at bruge min editor og en række filer med basis-forspørgsler. Så kan jeg let hente en forspørgsel ind og rette den til. Tilbage er der så at opdatere Content-Length headeren (i vim: marker kroppen med 'v' og tryk ':wc -c' og undo) og endelig sende forspørgslen til serveren (i vim: ':%!nc 192.168.42.42 80') og så vent på at indholdet i editoren bliver erstattet med svaret.

Næste skridt bliver lige at lave 5 linjer perl der selv opdaterer Content-Length istedet for at jeg skal gøre det i hånden. Har I nogle smartere løsninger?

Kommentarer (8)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#4 Peter Makholm Blogger

Ja, curl vil kunne give en Content-Length, men resten kommer let til at være mere besværligt. Følgende er eksemplet i afsnit 9.1.5 af WebDAV-standarden (RFC4918) udsat for curl:

[code=bash]curl -X PROPFIND http://localhost:8080/container/ -H 'Depth: 1' -H 'Content-Type: application/xml; charset="utf-8"' -H 'Host: example.com' --data '<?xml version="1.0" encoding="utf-8" ?> '[/code]

  • 0
  • 0
#7 Peter Makholm Blogger

Det ville undre mig meget om ikke Emacs havde passende funktioenr der kunne gøre det samme. Alt der skal til er jo bare at filtrere teksten gennem et eksternt program (her netcat).

Men lige hvilken funktion eller hvilken obskur tastekombination den er bundet til som standard har jeg ingen anelse om.

  • 0
  • 0
Log ind eller Opret konto for at kommentere