<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=CallHTTP</id>
	<title>CallHTTP - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pickwiki.org/index.php?action=history&amp;feed=atom&amp;title=CallHTTP"/>
	<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=CallHTTP&amp;action=history"/>
	<updated>2026-04-28T22:09:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://pickwiki.org/index.php?title=CallHTTP&amp;diff=1641&amp;oldid=prev</id>
		<title>Conversion script: link fix</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=CallHTTP&amp;diff=1641&amp;oldid=prev"/>
		<updated>2015-02-26T23:48:54Z</updated>

		<summary type="html">&lt;p&gt;link fix&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Note: in &amp;lt;nowiki&amp;gt;Windows/Universe&amp;lt;/nowiki&amp;gt;, if your request is taking more than 5 seconds, there&amp;#039;s a [[Windows_Universe_Socket_Bug|bugfix]].&lt;br /&gt;
----&lt;br /&gt;
Here is a very simple example using [[CallHTTP]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
URL=&amp;quot;http://www.example.com&amp;quot;                                              &lt;br /&gt;
HTTP.METHOD = &amp;quot;GET&amp;quot;                                                         &lt;br /&gt;
X.RTN.CODE = createRequest(URL, HTTP.METHOD, X.HANDLE)                      &lt;br /&gt;
CRT &amp;#039;createRequest: &amp;#039;:X.RTN.CODE                                          &lt;br /&gt;
X.RTN.CODE = submitRequest(X.HANDLE, &amp;#039;&amp;#039;, &amp;#039;&amp;#039;, X.RESPONSE.HEADERS, X.RESPONSE.DATA, X.HTTP.STATUS)&lt;br /&gt;
CRT &amp;#039;submitRequest: &amp;#039;:X.RTN.CODE&lt;br /&gt;
*&lt;br /&gt;
CRT &amp;#039;X.RESPONSE.HEADERS = &amp;#039;:X.RESPONSE.HEADERS&lt;br /&gt;
CRT &amp;#039;X.RESPONSE.DATA = &amp;#039;:X.RESPONSE.DATA&lt;br /&gt;
CRT &amp;#039;X.HTTP.STATUS = &amp;#039;:X.HTTP.STATUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
John T. (johnt -at- amileasing -dot- com)&lt;br /&gt;
Here&amp;#039;s some more sample [[CallHTTP]] code:&lt;br /&gt;
&lt;br /&gt;
The samples show calling a web service to get some data. The first&lt;br /&gt;
example, however, does not work at least as of Universe 9.6. [[CallHTTP]], when&lt;br /&gt;
doing a POST request, will strip out any Content-Type headers added&lt;br /&gt;
Ref: http://www.indexinfocus.com/dl/u2list/200304/49063.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   PROMPT &amp;quot;&amp;quot;&lt;br /&gt;
*---- ----*&lt;br /&gt;
*---- ----*&lt;br /&gt;
   X = protocolLogging(&amp;quot;&amp;quot;, 1, 10)&lt;br /&gt;
*---- ----*&lt;br /&gt;
   HTML.URL = &amp;quot;www.webservicex.net&amp;quot;&lt;br /&gt;
   HTML.URL.PATH = &amp;quot;/uszip.asmx&amp;quot;&lt;br /&gt;
   HTML.METHOD = &amp;quot;POST&amp;quot;&lt;br /&gt;
   HTML.BODY.CONTENTTYPE = &amp;quot;text/xml; charset=utf-8&amp;quot;&lt;br /&gt;
   HTML.SERVER = &amp;quot;www.webservicex.net&amp;quot;&lt;br /&gt;
   HTML.HEADERS = &amp;quot;&amp;quot;&lt;br /&gt;
   HTML.HEADERS&amp;lt;1,1&amp;gt; = &amp;quot;SOAPAction&amp;quot;&lt;br /&gt;
   HTML.HEADERS&amp;lt;2,1&amp;gt; = &amp;#039;&amp;quot;http://www.webserviceX.NET/GetInfoByZIP&amp;quot;&amp;#039;&lt;br /&gt;
   HTML.HEADERS.CNT = 1&lt;br /&gt;
   HTML.COOKIES = &amp;quot;&amp;quot;&lt;br /&gt;
   HTML.COOKIES.CNT = 0&lt;br /&gt;
*---- ----*&lt;br /&gt;
   XML = &amp;quot;&amp;quot;&lt;br /&gt;
   XML :=&amp;#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#039;&lt;br /&gt;
   XML :=&amp;#039;&amp;lt;soap:Envelope xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:soap=&amp;quot;http://schemas.xmls.soap.org/soap/envelope/&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
   XML :=&amp;#039;  &amp;lt;soap:Body&amp;gt;&amp;#039;&lt;br /&gt;
   XML :=&amp;#039;&amp;lt;[[GetInfoByZIP]] xmlns=&amp;quot;http://www.webserviceX.NET&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
   XML :=&amp;#039;&amp;lt;USZip&amp;gt;01606&amp;lt;/USZip&amp;gt;&amp;#039;&lt;br /&gt;
   XML :=&amp;#039;    &amp;lt;/GetInfoByZIP&amp;gt;&amp;#039;&lt;br /&gt;
   XML :=&amp;#039;  &amp;lt;/soap:Body&amp;gt;&amp;#039;&lt;br /&gt;
   XML :=&amp;#039;&amp;lt;/soap:Envelope&amp;gt;&amp;#039;&lt;br /&gt;
*---- ----*&lt;br /&gt;
   HTML.BODY = XML&lt;br /&gt;
*&lt;br /&gt;
   GOSUB GET.HTML.PAGE:&lt;br /&gt;
*---- ----*&lt;br /&gt;
   PRINT &amp;quot;RESPONSE = #&amp;quot;:HTML.RESPONSE:&amp;quot;#&amp;quot;&lt;br /&gt;
   X = protocolLogging(&amp;quot;&amp;quot;, 2, 10)&lt;br /&gt;
*&lt;br /&gt;
   STOP&lt;br /&gt;
*---- ----*&lt;br /&gt;
GET.HTML.PAGE:&lt;br /&gt;
*&lt;br /&gt;
* IN:&lt;br /&gt;
* HTML.URL&lt;br /&gt;
* HTML.URL.PATH&lt;br /&gt;
* HTML.METHOD = &amp;quot;GET&amp;quot; OR &amp;quot;POST&amp;quot;&lt;br /&gt;
* HTML.BODY.CONTENTTYPE&lt;br /&gt;
* HTML.BODY&lt;br /&gt;
* HTML.SERVER&lt;br /&gt;
* HTML.HEADERS&lt;br /&gt;
* HTML.HEADERS.CNT&lt;br /&gt;
* HTML.COOKIES&lt;br /&gt;
* HTML.COOKIES.CNT&lt;br /&gt;
*&lt;br /&gt;
* OUT:&lt;br /&gt;
* HTML.RESPONSE&lt;br /&gt;
*&lt;br /&gt;
   CRLF = CHAR(13):CHAR(10)&lt;br /&gt;
   HTML.TIMEOUT = 20000&lt;br /&gt;
   HTML.RESPONSE = &amp;quot;&amp;quot;&lt;br /&gt;
*&lt;br /&gt;
   HTML.SKTERR = OPENSOCKET(HTML.URL, 80, 1, 3000, HTML.SKTHANDLE)&lt;br /&gt;
   IF HTML.SKTERR THEN&lt;br /&gt;
      PRINT &amp;quot;ERROR OPENING SOCKET &amp;quot;:HTML.SKTERR&lt;br /&gt;
      RETURN&lt;br /&gt;
   END&lt;br /&gt;
*&lt;br /&gt;
   HTML.BODY.LEN = LEN(HTML.BODY)&lt;br /&gt;
*&lt;br /&gt;
* Write HTTP Method and Request Path&lt;br /&gt;
   BEGIN CASE&lt;br /&gt;
      CASE HTML.METHOD EQ &amp;quot;GET&amp;quot;&lt;br /&gt;
         HTML.WRITE = &amp;quot;GET &amp;quot;:HTML.URL.PATH:&amp;quot; HTTP/1.1&amp;quot;:CRLF&lt;br /&gt;
         HTML.BODY = &amp;quot;&amp;quot;&lt;br /&gt;
*&lt;br /&gt;
      CASE HTML.METHOD EQ &amp;quot;POST&amp;quot;&lt;br /&gt;
         HTML.WRITE = &amp;quot;POST &amp;quot;:HTML.URL.PATH:&amp;quot; HTTP/1.1&amp;quot;:CRLF&lt;br /&gt;
         HTML.WRITE := &amp;quot;Content-Type: &amp;quot;:HTML.BODY.CONTENTTYPE:CRLF&lt;br /&gt;
         HTML.WRITE := &amp;quot;Content-Length: &amp;quot;:HTML.BODY.LEN:CRLF&lt;br /&gt;
*&lt;br /&gt;
   END CASE&lt;br /&gt;
*&lt;br /&gt;
* Write HTTP Headers&lt;br /&gt;
   HTML.WRITE := &amp;quot;Host: &amp;quot;:HTML.SERVER:CRLF&lt;br /&gt;
   **HTML.WRITE := &amp;quot;User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; [[WindowsNT]])&amp;quot;:CRLF ;* Blandishments and lies eh?&lt;br /&gt;
   HTML.WRITE := &amp;quot;User-Agent: Universe 9.6&amp;quot;:CRLF&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*  NEED THE FOLLOWING LINE, OR THE CONNECTION WILL NOT CLOSE WHEN THROUGH&lt;br /&gt;
*  SENDING. IT WILL JUST TIME OUT.&lt;br /&gt;
*&lt;br /&gt;
   HTML.WRITE := &amp;quot;Connection: Close&amp;quot;:CRLF&lt;br /&gt;
   **HTML.WRITE := &amp;quot;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,*/*&amp;quot;:CRLF&lt;br /&gt;
   **HTML.WRITE := &amp;quot;Accept-Language: en-au&amp;quot;:CRLF&lt;br /&gt;
   **HTML.WRITE := &amp;quot;Accept-Encoding: gzip, deflate&amp;quot;:CRLF&lt;br /&gt;
   **HTML.WRITE := &amp;quot;Cache-Control: no-cache&amp;quot;:CRLF&lt;br /&gt;
*&lt;br /&gt;
* And any extra one you specify&lt;br /&gt;
   IF HTML.HEADERS.CNT GT 0 THEN&lt;br /&gt;
      FOR HTML.HEADERS.I = 1 TO HTML.HEADERS.CNT&lt;br /&gt;
         HTML.WRITE := HTML.HEADERS&amp;lt;1, HTML.HEADERS.I&amp;gt;&lt;br /&gt;
         HTML.WRITE := &amp;quot;: &amp;quot;&lt;br /&gt;
         HTML.WRITE := HTML.HEADERS&amp;lt;2, HTML.HEADERS.I&amp;gt;&lt;br /&gt;
         HTML.WRITE := CRLF&lt;br /&gt;
      NEXT HTML.HEADERS.I&lt;br /&gt;
   END&lt;br /&gt;
*&lt;br /&gt;
* Stick in some cookies if you need&lt;br /&gt;
   IF HTML.COOKIES.CNT GT 0 THEN&lt;br /&gt;
      HTML.WRITE := &amp;quot;Cookie:&amp;quot;&lt;br /&gt;
      FOR HTML.COOKIES.I = 1 TO HTML.COOKIES.CNT&lt;br /&gt;
         HTML.WRITE := &amp;quot; &amp;quot;&lt;br /&gt;
         HTML.WRITE := HTML.COOKIES&amp;lt;1, HTML.COOKIES.I&amp;gt;&lt;br /&gt;
         HTML.WRITE := &amp;quot;=&amp;quot;&lt;br /&gt;
         HTML.WRITE := HTML.COOKIES&amp;lt;2, HTML.COOKIES.I&amp;gt;&lt;br /&gt;
         IF HTML.COOKIES.I LT HTML.COOKIES.CNT THEN&lt;br /&gt;
            HTML.WRITE := &amp;quot;;&amp;quot;&lt;br /&gt;
         END&lt;br /&gt;
      NEXT HTML.COOKIES.I&lt;br /&gt;
      HTML.WRITE := CRLF&lt;br /&gt;
   END&lt;br /&gt;
*&lt;br /&gt;
   HTML.WRITE := CRLF&lt;br /&gt;
*&lt;br /&gt;
* Append the request body&lt;br /&gt;
   HTML.WRITE := HTML.BODY&lt;br /&gt;
   HTML.WRITE := CRLF&lt;br /&gt;
*&lt;br /&gt;
* Send it down the socket handle you previously opened&lt;br /&gt;
   HTML.SKTERR = WRITESOCKET(HTML.SKTHANDLE, HTML.WRITE, HTML.TIMEOUT,1, HTML.WRITE.ACTLEN)&lt;br /&gt;
   IF HTML.SKTERR THEN&lt;br /&gt;
      HTML.ERROR.ADD = &amp;quot;WRITESOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
      GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
   END&lt;br /&gt;
*&lt;br /&gt;
* Read Response&lt;br /&gt;
   HTML.READ = &amp;quot;&amp;quot;&lt;br /&gt;
   HTML.READ.ACTLEN = 0&lt;br /&gt;
   HTML.READ.DONE = @FALSE&lt;br /&gt;
*&lt;br /&gt;
* Read Status Line&lt;br /&gt;
   HTML.SKTERR = READSOCKET(HTML.SKTHANDLE, HTML.RESPONSE, 100,HTML.TIMEOUT, 1, HTML.READ.ACTLEN)&lt;br /&gt;
   IF HTML.SKTERR THEN&lt;br /&gt;
      HTML.ERROR.ADD = &amp;quot;READSOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
      GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
   END&lt;br /&gt;
*&lt;br /&gt;
   HTML.TEMP = TRIM(HTML.RESPONSE)&lt;br /&gt;
   HTML.TEMP = CONVERT(&amp;quot; &amp;quot;, @AM, HTML.TEMP)&lt;br /&gt;
   HTML.RESPCODE = HTML.TEMP&amp;lt;2&amp;gt;&lt;br /&gt;
*&lt;br /&gt;
   IF HTML.RESPCODE GE 200 AND HTML.RESPCODE LT 300 THEN&lt;br /&gt;
      HTML.READ.DONE = @FALSE&lt;br /&gt;
   END ELSE&lt;br /&gt;
      HTML.READ.DONE = @TRUE&lt;br /&gt;
   END&lt;br /&gt;
   LOOP WHILE NOT(HTML.READ.DONE) DO&lt;br /&gt;
      HTML.SKTERR = READSOCKET(HTML.SKTHANDLE, HTML.READ, 0,HTML.TIMEOUT, 1, HTML.READ.ACTLEN)&lt;br /&gt;
      IF HTML.SKTERR AND HTML.SKTERR NE 14 THEN&lt;br /&gt;
         HTML.ERROR.ADD = &amp;quot;READSOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
         GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
      END&lt;br /&gt;
*&lt;br /&gt;
      IF HTML.SKTERR = 14 THEN&lt;br /&gt;
         HTML.READ.DONE = @TRUE&lt;br /&gt;
      END ELSE&lt;br /&gt;
         HTML.RESPONSE := HTML.READ&lt;br /&gt;
      END&lt;br /&gt;
   REPEAT&lt;br /&gt;
*&lt;br /&gt;
* Close Socket, unless you want to play with a persistent connection in&lt;br /&gt;
* which clase don&amp;#039;t Connection: Close&lt;br /&gt;
   HTML.SKTERR = CLOSESOCKET(HTML.SKTHANDLE)&lt;br /&gt;
   IF HTML.SKTERR THEN&lt;br /&gt;
      HTML.ERROR.ADD = &amp;quot;CLOSESOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
      GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
   END&lt;br /&gt;
   HTML.SKTHANDLE = &amp;quot;&amp;quot;&lt;br /&gt;
*&lt;br /&gt;
   RETURN&lt;br /&gt;
*&lt;br /&gt;
HTTP.CLIENT.METHOD.ERROR:&lt;br /&gt;
   PRINT HTML.ERROR.ADD&lt;br /&gt;
   STOP&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Conversion script</name></author>
	</entry>
	<entry>
		<id>https://pickwiki.org/index.php?title=CallHTTP&amp;diff=1642&amp;oldid=prev</id>
		<title>64.69.110.235: *</title>
		<link rel="alternate" type="text/html" href="https://pickwiki.org/index.php?title=CallHTTP&amp;diff=1642&amp;oldid=prev"/>
		<updated>2004-08-02T12:46:30Z</updated>

		<summary type="html">&lt;p&gt;*&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Here is a very simple example using CallHTTP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
URL=&amp;quot;http://www.example.com&amp;quot;                                              &lt;br /&gt;
HTTP.METHOD=&amp;quot;GET&amp;quot;                                                         &lt;br /&gt;
X.RTN.CODE = createRequest(URL,HTTP.METHOD,X.HANDLE)                      &lt;br /&gt;
CRT &amp;#039;createRequest: &amp;#039;:X.RTN.CODE                                          &lt;br /&gt;
X.RTN.CODE = submitRequestX.HANDLE,&amp;#039;&amp;#039;,&amp;#039;&amp;#039;,X.RESPONSE.HEADERS,X.RESPONSE.DATA,X.HTTP.STATUS)&lt;br /&gt;
CRT &amp;#039;submitRequest: &amp;#039;:X.RTN.CODE&lt;br /&gt;
*&lt;br /&gt;
CRT &amp;#039;X.RESPONSE.HEADERS = &amp;#039;:X.RESPONSE.HEADERS&lt;br /&gt;
CRT &amp;#039;X.RESPONSE.DATA = &amp;#039;:X.RESPONSE.DATA&lt;br /&gt;
CRT &amp;#039;X.HTTP.STATUS = &amp;#039;:X.HTTP.STATUS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
John T. (johnt -at- amileasing -dot- com)&lt;br /&gt;
Here&amp;#039;s some more sample CallHTTP Code:&lt;br /&gt;
&lt;br /&gt;
The samples show calling a web service to get some data. The first&lt;br /&gt;
example, however, does not work at least as of Universe 9.6. CallHTTP, when&lt;br /&gt;
doing a POST request, will strip out any Content-Type headers added&lt;br /&gt;
Ref: http://www.indexinfocus.com/dl/u2list/200304/49063.html&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PROMPT &amp;quot;&amp;quot;&lt;br /&gt;
*---- ----*&lt;br /&gt;
SLASH=&amp;quot;/&amp;quot;&lt;br /&gt;
*---- ----*&lt;br /&gt;
PROXY.NAME = &amp;quot;&amp;quot;&lt;br /&gt;
PROXY.PORT = 0&lt;br /&gt;
VERSION = &amp;quot;1.0&amp;quot;&lt;br /&gt;
HEADERS = &amp;quot;&amp;quot;&lt;br /&gt;
HTTP.STATUS = &amp;quot;&amp;quot;&lt;br /&gt;
*---- ----*&lt;br /&gt;
URL=&amp;quot;http://www.webservicex.net/uszip.asmx&amp;quot;&lt;br /&gt;
*---- ----*&lt;br /&gt;
X=protocolLogging(&amp;quot;httplog.txt&amp;quot;,&amp;quot;ON&amp;quot;,4)&lt;br /&gt;
*---- ----*&lt;br /&gt;
X=createRequest(URL,&amp;quot;POST&amp;quot;,HANDLE)&lt;br /&gt;
X=setHTTPDefault(&amp;quot;HEADERS&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
X=setHTTPDefault(&amp;quot;VERSION&amp;quot;,&amp;quot;1.1&amp;quot;)&lt;br /&gt;
X=SETREQUESTHEADER(HANDLE, &amp;quot;Content-Type&amp;quot;,&amp;quot;text/xml; charset=utf-8&amp;quot;)&lt;br /&gt;
PRINT X&lt;br /&gt;
X=SETREQUESTHEADER(HANDLE, &amp;quot;SOAPAction&amp;quot;,&amp;#039;&amp;quot;http://www.webserviceX.NET/GetInfoByZIP&amp;quot;&amp;#039;)&lt;br /&gt;
*---- ----*&lt;br /&gt;
XML = &amp;quot;&amp;quot;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;soap:Envelope xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:soap=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;  &amp;lt;soap:Body&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;GetInfoByZIP xmlns=&amp;quot;http://www.webserviceX.NET&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;USZip&amp;gt;01606&amp;lt;/USZip&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;    &amp;lt;/GetInfoByZIP&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;  &amp;lt;/soap:Body&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;/soap:Envelope&amp;gt;&amp;#039;&lt;br /&gt;
*---- ----*&lt;br /&gt;
*X=SETREQUESTHEADER(HANDLE, &amp;quot;Content-Length&amp;quot;,LEN(XML))&lt;br /&gt;
*---- ----*&lt;br /&gt;
X=submitRequest(HANDLE,2000,XML,RESP.HEAD,RESP.DATA,HTTP.STATUS)&lt;br /&gt;
*---- ----*&lt;br /&gt;
PRINT &amp;quot;X = &amp;quot;:X&lt;br /&gt;
PRINT &amp;quot;XML = &amp;quot;:XML&lt;br /&gt;
MAX=DCOUNT(RESP.HEAD,@AM)&lt;br /&gt;
FOR I=1 TO MAX&lt;br /&gt;
PRINT &amp;quot;RESP.HEAD = &amp;quot;:RESP.HEAD&amp;lt;I,1&amp;gt;&amp;quot;L#12 &amp;quot;:RESP.HEAD&amp;lt;I,2&amp;gt;&lt;br /&gt;
NEXT I&lt;br /&gt;
PRINT &amp;quot;RESP.DATA = &amp;quot;:RESP.DATA&lt;br /&gt;
PRINT &amp;quot;HTTP.STATUS = &amp;quot;:HTTP.STATUS&lt;br /&gt;
X=protocolLogging(&amp;quot;httplog.txt&amp;quot;,&amp;quot;OFF&amp;quot;,4)&lt;br /&gt;
*---- ----*&lt;br /&gt;
*ARRAY=PARSE.XML(RESP.DATA,1,2,3,4,ERR)&lt;br /&gt;
*---- ----*&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code uses direct sockets, and is based off code posted by &lt;br /&gt;
Craig Bennett on the U2 mailing list ((http://www.indexinfocus.com/dl/u2list/200304/49064.html)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PROMPT &amp;quot;&amp;quot;&lt;br /&gt;
*---- ----*&lt;br /&gt;
*---- ----*&lt;br /&gt;
X=protocolLogging(&amp;quot;&amp;quot;,1,10)&lt;br /&gt;
*---- ----*&lt;br /&gt;
HTML.URL= &amp;quot;www.webservicex.net&amp;quot;&lt;br /&gt;
HTML.URL.PATH = &amp;quot;/uszip.asmx&amp;quot;&lt;br /&gt;
HTML.METHOD = &amp;quot;POST&amp;quot;&lt;br /&gt;
HTML.BODY.CONTENTTYPE = &amp;quot;text/xml; charset=utf-8&amp;quot;&lt;br /&gt;
HTML.SERVER = &amp;quot;www.webservicex.net&amp;quot;&lt;br /&gt;
HTML.HEADERS = &amp;quot;&amp;quot;&lt;br /&gt;
HTML.HEADERS&amp;lt;1,1&amp;gt; = &amp;quot;SOAPAction&amp;quot;&lt;br /&gt;
HTML.HEADERS&amp;lt;2,1&amp;gt; = &amp;#039;&amp;quot;http://www.webserviceX.NET/GetInfoByZIP&amp;quot;&amp;#039;&lt;br /&gt;
HTML.HEADERS.CNT = 1&lt;br /&gt;
HTML.COOKIES = &amp;quot;&amp;quot;&lt;br /&gt;
HTML.COOKIES.CNT = 0&lt;br /&gt;
*---- ----*&lt;br /&gt;
XML = &amp;quot;&amp;quot;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;soap:Envelope xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:soap=&amp;quot;http://schemas.xmls.soap.org/soap/envelope/&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;  &amp;lt;soap:Body&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;GetInfoByZIP xmlns=&amp;quot;http://www.webserviceX.NET&amp;quot;&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;USZip&amp;gt;01606&amp;lt;/USZip&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;    &amp;lt;/GetInfoByZIP&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;  &amp;lt;/soap:Body&amp;gt;&amp;#039;&lt;br /&gt;
XML :=&amp;#039;&amp;lt;/soap:Envelope&amp;gt;&amp;#039;&lt;br /&gt;
*---- ----*&lt;br /&gt;
HTML.BODY = XML&lt;br /&gt;
*&lt;br /&gt;
GOSUB GET.HTML.PAGE:&lt;br /&gt;
*---- ----*&lt;br /&gt;
PRINT &amp;quot;RESPONSE = #&amp;quot;:HTML.RESPONSE:&amp;quot;#&amp;quot;&lt;br /&gt;
X=protocolLogging(&amp;quot;&amp;quot;,2,10)&lt;br /&gt;
*&lt;br /&gt;
STOP&lt;br /&gt;
*---- ----*&lt;br /&gt;
GET.HTML.PAGE:&lt;br /&gt;
*&lt;br /&gt;
* IN:&lt;br /&gt;
* HTML.URL&lt;br /&gt;
* HTML.URL.PATH&lt;br /&gt;
* HTML.METHOD = &amp;quot;GET&amp;quot; OR &amp;quot;POST&amp;quot;&lt;br /&gt;
* HTML.BODY.CONTENTTYPE&lt;br /&gt;
* HTML.BODY&lt;br /&gt;
* HTML.SERVER&lt;br /&gt;
* HTML.HEADERS&lt;br /&gt;
* HTML.HEADERS.CNT&lt;br /&gt;
* HTML.COOKIES&lt;br /&gt;
* HTML.COOKIES.CNT&lt;br /&gt;
*&lt;br /&gt;
* OUT:&lt;br /&gt;
* HTML.RESPONSE&lt;br /&gt;
*&lt;br /&gt;
CRLF = CHAR(13):CHAR(10)&lt;br /&gt;
HTML.TIMEOUT = 20000&lt;br /&gt;
HTML.RESPONSE = &amp;quot;&amp;quot;&lt;br /&gt;
*&lt;br /&gt;
HTML.SKTERR = OPENSOCKET(HTML.URL, 80, 1, 3000, HTML.SKTHANDLE)&lt;br /&gt;
IF HTML.SKTERR THEN&lt;br /&gt;
      PRINT &amp;quot;ERROR OPENING SOCKET &amp;quot;:HTML.SKTERR&lt;br /&gt;
             RETURN&lt;br /&gt;
 END&lt;br /&gt;
 *&lt;br /&gt;
 HTML.BODY.LEN = LEN(HTML.BODY)&lt;br /&gt;
 *&lt;br /&gt;
 * Write HTTP Method and Request Path&lt;br /&gt;
 BEGIN CASE&lt;br /&gt;
       CASE HTML.METHOD EQ &amp;quot;GET&amp;quot;&lt;br /&gt;
             HTML.WRITE = &amp;quot;GET &amp;quot;:HTML.URL.PATH:&amp;quot; HTTP/1.1&amp;quot;:CRLF&lt;br /&gt;
             HTML.BODY = &amp;quot;&amp;quot;&lt;br /&gt;
 *&lt;br /&gt;
       CASE HTML.METHOD EQ &amp;quot;POST&amp;quot;&lt;br /&gt;
             HTML.WRITE = &amp;quot;POST &amp;quot;:HTML.URL.PATH:&amp;quot; HTTP/1.1&amp;quot;:CRLF&lt;br /&gt;
             HTML.WRITE:= &amp;quot;Content-Type: &amp;quot;:HTML.BODY.CONTENTTYPE:CRLF&lt;br /&gt;
             HTML.WRITE:= &amp;quot;Content-Length: &amp;quot;:HTML.BODY.LEN:CRLF&lt;br /&gt;
 *&lt;br /&gt;
 END CASE&lt;br /&gt;
 *&lt;br /&gt;
 * Write HTTP Headers&lt;br /&gt;
 HTML.WRITE:= &amp;quot;Host: &amp;quot;:HTML.SERVER:CRLF&lt;br /&gt;
 *HTML.WRITE:= &amp;quot;User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; WindowsNT)&amp;quot;:CRLF ;* Blandishments and lies eh?&lt;br /&gt;
HTML.WRITE:= &amp;quot;User-Agent: Universe 9.6&amp;quot;:CRLF&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*  NEED THE FOLLOWING LINE, OR THE CONNECTION WILL NOT CLOSE WHEN THROUGH&lt;br /&gt;
*  SENDING. IT WILL JUST TIME OUT.&lt;br /&gt;
*&lt;br /&gt;
HTML.WRITE:= &amp;quot;Connection: Close&amp;quot;:CRLF&lt;br /&gt;
*HTML.WRITE:= &amp;quot;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword,*/*&amp;quot;:CRLF&lt;br /&gt;
*HTML.WRITE:= &amp;quot;Accept-Language: en-au&amp;quot;:CRLF&lt;br /&gt;
*HTML.WRITE:= &amp;quot;Accept-Encoding: gzip, deflate&amp;quot;:CRLF&lt;br /&gt;
*HTML.WRITE:= &amp;quot;Cache-Control: no-cache&amp;quot;:CRLF&lt;br /&gt;
*&lt;br /&gt;
* And any extra one you specify&lt;br /&gt;
IF HTML.HEADERS.CNT GT 0 THEN&lt;br /&gt;
      FOR HTML.HEADERS.I = 1 TO HTML.HEADERS.CNT&lt;br /&gt;
            HTML.WRITE:= HTML.HEADERS&amp;lt;1, HTML.HEADERS.I&amp;gt;&lt;br /&gt;
            HTML.WRITE:= &amp;quot;: &amp;quot;&lt;br /&gt;
            HTML.WRITE:= HTML.HEADERS&amp;lt;2, HTML.HEADERS.I&amp;gt;&lt;br /&gt;
            HTML.WRITE:= CRLF&lt;br /&gt;
      NEXT HTML.HEADERS.I&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
* Stick in some cookies if you need&lt;br /&gt;
IF HTML.COOKIES.CNT GT 0 THEN&lt;br /&gt;
      HTML.WRITE:= &amp;quot;Cookie:&amp;quot;&lt;br /&gt;
      FOR HTML.COOKIES.I = 1 TO HTML.COOKIES.CNT&lt;br /&gt;
            HTML.WRITE:= &amp;quot; &amp;quot;&lt;br /&gt;
            HTML.WRITE:= HTML.COOKIES&amp;lt;1, HTML.COOKIES.I&amp;gt;&lt;br /&gt;
            HTML.WRITE:= &amp;quot;=&amp;quot;&lt;br /&gt;
            HTML.WRITE:= HTML.COOKIES&amp;lt;2, HTML.COOKIES.I&amp;gt;&lt;br /&gt;
            IF HTML.COOKIES.I LT HTML.COOKIES.CNT THEN&lt;br /&gt;
                  HTML.WRITE:= &amp;quot;;&amp;quot;&lt;br /&gt;
            END&lt;br /&gt;
      NEXT HTML.COOKIES.I&lt;br /&gt;
      HTML.WRITE:= CRLF&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
HTML.WRITE:= CRLF&lt;br /&gt;
*&lt;br /&gt;
* Append the request body&lt;br /&gt;
HTML.WRITE:= HTML.BODY&lt;br /&gt;
HTML.WRITE:= CRLF&lt;br /&gt;
*&lt;br /&gt;
* Send it down the socket handle you previously opened&lt;br /&gt;
HTML.SKTERR = WRITESOCKET(HTML.SKTHANDLE, HTML.WRITE, HTML.TIMEOUT,1, HTML.WRITE.ACTLEN)&lt;br /&gt;
IF HTML.SKTERR THEN&lt;br /&gt;
      HTML.ERROR.ADD = &amp;quot;WRITESOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
      GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
* Read Response&lt;br /&gt;
HTML.READ = &amp;quot;&amp;quot;&lt;br /&gt;
HTML.READ.ACTLEN = 0&lt;br /&gt;
HTML.READ.DONE = @FALSE&lt;br /&gt;
*&lt;br /&gt;
* Read Status Line&lt;br /&gt;
HTML.SKTERR = READSOCKET(HTML.SKTHANDLE, HTML.RESPONSE, 100,HTML.TIMEOUT, 1,&lt;br /&gt;
 HTML.READ.ACTLEN)&lt;br /&gt;
IF HTML.SKTERR THEN&lt;br /&gt;
      HTML.ERROR.ADD = &amp;quot;READSOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
      GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
END&lt;br /&gt;
*&lt;br /&gt;
HTML.TEMP = TRIM(HTML.RESPONSE)&lt;br /&gt;
HTML.TEMP = CONVERT(&amp;quot; &amp;quot;, @AM, HTML.TEMP)&lt;br /&gt;
HTML.RESPCODE = HTML.TEMP&amp;lt;2&amp;gt;&lt;br /&gt;
*&lt;br /&gt;
IF HTML.RESPCODE GE 200 AND HTML.RESPCODE LT 300 THEN&lt;br /&gt;
      HTML.READ.DONE = @FALSE&lt;br /&gt;
END ELSE&lt;br /&gt;
      HTML.READ.DONE = @TRUE&lt;br /&gt;
END&lt;br /&gt;
LOOP WHILE NOT(HTML.READ.DONE) DO&lt;br /&gt;
      HTML.SKTERR = READSOCKET(HTML.SKTHANDLE, HTML.READ, 0,HTML.TIMEOUT, 1, HTML.READ.ACTLEN)&lt;br /&gt;
      IF HTML.SKTERR AND HTML.SKTERR NE 14 THEN&lt;br /&gt;
            HTML.ERROR.ADD = &amp;quot;READSOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
            GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
      END&lt;br /&gt;
*&lt;br /&gt;
      IF HTML.SKTERR = 14  THEN&lt;br /&gt;
            HTML.READ.DONE = @TRUE&lt;br /&gt;
      END ELSE&lt;br /&gt;
            HTML.RESPONSE := HTML.READ&lt;br /&gt;
      END&lt;br /&gt;
 REPEAT&lt;br /&gt;
 *&lt;br /&gt;
 * Close Socket, unless you want to play with a persistent connection in&lt;br /&gt;
 * which clase don&amp;#039;t Connection: Close&lt;br /&gt;
 HTML.SKTERR = CLOSESOCKET(HTML.SKTHANDLE)&lt;br /&gt;
 IF HTML.SKTERR THEN&lt;br /&gt;
       HTML.ERROR.ADD = &amp;quot;CLOSESOCKET ERROR &amp;quot;:HTML.SKTERR&lt;br /&gt;
       GOSUB HTTP.CLIENT.METHOD.ERROR&lt;br /&gt;
 END&lt;br /&gt;
 HTML.SKTHANDLE = &amp;quot;&amp;quot;&lt;br /&gt;
 *&lt;br /&gt;
 RETURN&lt;br /&gt;
 *&lt;br /&gt;
 HTTP.CLIENT.METHOD.ERROR:&lt;br /&gt;
      PRINT HTML.ERROR.ADD&lt;br /&gt;
      STOP&lt;br /&gt;
 END&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>64.69.110.235</name></author>
	</entry>
</feed>