Frage

Ich habe mit TCP / IP-Vernetzung in Gawk Hantieren und eine harte Zeit habe, herauszufinden, warum es mit einigen Standorten benimmt sich gut, aber nicht für andere. Ich habe sogar versucht, mit HTTP-Live-Headers in Windows, um zu versuchen und zu debuggen, was los ist, aber ohne Erfolg.

Die Probe Gawk Code (Version 3.1.5) wird gut für die Arbeit vor Ort www.sobell.com sondern hängen an www.drudgreport.com.

BEGIN {
print "Dumping HTML of www.sobell.com"

server = "/inet/tcp/0/www.sobell.com/80"
print "GET http://www.sobell.com" |& server
while ((server |& getline) > 0)
    print $0
close(server)

print "Dumping HTML of www.drudgereport.com"

server = "/inet/tcp/0/www.drudgereport.com/80"
print "GET http://www.drudgereport.com" |& server
while ((server |& getline) > 0)
    print $0
close(server)

}

Ich schätze jede Hilfe! Dank Alle.

War es hilfreich?

Lösung

Ihr Code (und die gaffen Handbuch) verwendet die veraltete HTTP / 0.9-Syntax. Anscheinend ist der zweite Server nicht mehr unterstützt dies. Wichtige Unterschiede:

      
  • Die Leitungen müssen mit "\ r \ n" end anstelle von einfacher UNIX newlines.   
  • Sie müssen Ihre Anfrage mit einer leeren Zeile enden.   
  • Fügen Sie eine Version Typ (HTTP / 1.0 oder HTTP / 1.1) bis zum Ende der Anforderungsleitung.   
  • Üblicherweise wird die Anfrage-String nicht den Hostnamen enthält, wird diese auf einem separaten „Host:“ put Linie.

Der folgende Code funktioniert für mich:

BEGIN {
    ORS = "\r\n"
    server = "/inet/tcp/0/www.drudgereport.com/80"
    print "GET / HTTP/1.1" |& server
    print "Host: www.drudgereport.com" |& server
    print "" |& server
    while ((server |& getline) > 0)
        print $0
    close(server)
}

Sie können alle blutigen Details in RFC 1945 (1.0) und RFC 2616 (1.1).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top