Works fine for me too.
Doug, it seems like there is a proxy configured. This means that you cannot access the remoteAdr directly but
only indirectly via an auxiliary node called a proxy.
If that is the case, you must use the the proxy's IP and port as remoteAdr.
You can use the test program below for testing with a proxy.
Code: Select all
MODULE TestHttpClient;
IMPORT CommStreams, Views, TextViews, TextModels;
CONST CRLF = "" + 0DX + 0AX;
PROCEDURE Do*;
VAR stream: CommStreams.Stream;
res, beg, len, i, written, read: INTEGER;
request: ARRAY 256 OF CHAR;
buf: ARRAY 2000 OF BYTE;
t: TextModels.Model; w: TextModels.Writer;
remoteAdrOrProxy: ARRAY 32 OF CHAR;
BEGIN
remoteAdrOrProxy := "greenwoodfarm.com:80";
CommStreams.NewStream("CommTCP", "0.0.0.0:0", remoteAdrOrProxy, stream, res);
ASSERT(stream # NIL);
ASSERT(res = 0);
ASSERT(stream.IsConnected());
request := "GET http://greenwoodfarm.com:80/ HTTP/1.0" + CRLF
+ "Host: greenwoodfarm.com" + CRLF
+ CRLF;
(* write http request *)
beg := 0; len := LEN(request$);
FOR i := 0 TO len - 1 DO buf[i] := SHORT(SHORT(ORD(request[i]))) END;
WHILE stream.IsConnected() & (len > 0) DO
stream.WriteBytes(buf, beg, len, written);
INC(beg, written); DEC(len, written)
END;
(* read http response header and body; ignores encoding *)
t := TextModels.dir.New();
w := t.NewWriter(NIL);
WHILE stream.IsConnected() DO
stream.ReadBytes(buf, 0, LEN(buf), read);
FOR i := 0 TO read - 1 DO w.WriteChar(CHR(buf[i])) END
END;
stream.Close;
Views.OpenAux(TextViews.dir.New(t), "Response")
END Do;
END TestHttpClient.
^Q TestHttpClient.Do
- Josef