|
First, I apologize for the style. I wrote some, I stole some
from "Who Knew..." and Chris Bipes gave me some code, also.
Thanks Chris.
Secondly, remember I had this thing working with variable
length fields first. So, I left some of that code.
Also, I've taken out error handling for this e-mail.
This code works but I'd like to get some opinions.
Anyway, my question is: How does this look?
* Socket data
D SocketData S 32767A Varying
D#SocketData S 32767A Varying
D SockDtaLen S 10I 0
D SockDtaPtr S *
D#BasePtr S *
D#XMLLen S 10U 0 Inz(32767)
D#XML S 32767A Varying
* Build Socket Data
* - Build POST header with destination to Demand
Fulfillment Servlet/CGI Script
* - Servlet needed info: content type and content length
* Note: Hex '0D'= New Line , Hex '25'= Carriage Return
C Eval SocketData = 'POST
/servlet/DfServletProxy H+
C TTP/1.0' + x'0D' + x'25' +
C 'Content-type:
application/x-www-form-urlenc+
C oded' + x'0D' + x'25' +
C 'Content-length: ' +
C %trim(%editc(%len(#XML):'Z'))
+
C x'0D' + x'25' + x'0D' + x'25'
+ #XML
* translate response to ASCII
c eval p_InBuff = %addr(SocketData)
+ 2
c eval p_OutBuff = %addr(SocketData)
+ 2
c eval InBytes = %len(SocketData)
c eval OutBytes = %len(SocketData)
c eval rc = IConv(ToAscii:
c %addr(p_InBuff):
c p_InBytes:
c %addr(p_OutBuff):
c p_OutBytes)
* Send the XML to the server over the socket
C Eval SockDtaLen = %len(SocketData)
C Eval SockDtaPtr = %Addr(SocketData)
+ 2
C Eval RC = Write(SD: SockDtaPtr
C : SockDtaLen )
* Read the reply data from the server
C Eval #XMLLen = 32767
C Alloc #XMLLen SockDtaPtr
C Eval #BasePtr = SockDtaPtr
C DoU RC < 1
C Eval SockDtaLen = 32767
C Eval RC = Read ( SD : SockDtaPtr :
C SockDtaLen )
C If SockDtaPtr - #BasePtr >
#XMLLen - 4096
C Eval #XMLLen = #XMLLen + 4096
C ReAlloc #XMLLen #BasePtr
C EndIf
C Eval SockDtaPtr = SockDtaPtr + RC
C EndDo
c eval p_InBuff = #BasePtr
c eval p_OutBuff = #BasePtr
c eval InBytes = SockDtaPtr -
#BasePtr
c eval OutBytes = SockDtaPtr -
#BasePtr
c eval rc = IConv(ToEBCDIC:
c %addr(p_InBuff):
c p_InBytes:
c %addr(p_OutBuff):
c p_OutBytes)
+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.