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