Als u http-verkeer met een http-server wilt genereren (in dit geval Lotus Domino), kunt u naast de browser ook vanuit een andere applicatie data uitwisselen met Lotus Domino. Met
http-post en
http-get methodes kunt u met een eigen VB applicatie data met de Lotus Domino server uitwisselen.
Lotus Domino begrijpt het Lotus Notes protocol en het HTTP protocol. Voor het HTTP protocol zijn op de Domino server allerlei zaken geregeld zodat http-post en http-get goed worden afgehandeld als deze via de browser wordt benaderd. Het is ook mogelijk om eigen programma's http-post en http-get uit te laten voeren. Zodra u dit naar de Lotus Domino server doet kunt u verschillende berichten sturen. Voor het uploaden van file attachements moet u de zogenaamde file upload control simuleren. Hieronder een stuk code waarin dat wordt gedaan, dit voorbeeld is in VBA gemaakt. Deze code maakt gebruik van velden zoals deze op een formulier staan en met ?Createdocument wordt er een nieuwe Lotus Notes document aangemaakt. Het is ook mogelijk het een en ander met een webagent te doen maar dat is een veel omslachtiger en trager proces.
code:
Private Sub verzenden_Click()
Dim xmlServerHttp As MSXML2.ServerXMLHTTP
Dim lResolve, lConnect, lSend, lReceive As Long
Dim res As Long
Dim sUrl, sUser, sPw As String
Dim strText As String
Dim strFile As String
Dim strText1 As String
Dim eol As String
Dim strDomFile As String
On Error GoTo errh
eol = Chr(13) + Chr(10)
Set xmlServerHttp = New MSXML2.ServerXMLHTTP
Const strBoundary = "---------------------------11415352332517"
Const strField = "Content-Disposition: form-data; name="
lResolve = 1800000 '=3 min msecs
lConnect = 1800000 '=3 min msecs
lSend = 1800000 '=3 min msecs
lReceive = 1800000 '=3 min msecs
Call xmlServerHttp.setTimeouts(lResolve, lConnect, lSend, lReceive)
sUrl = "http://www.e-office.com/eofupload.nsf/upload?createdocument"
'sUrl = "http://www.e-office.com/eofupload.nsf/upload?OpenForm&Seq=1"
sUser = user
sPw = "password"
Call xmlServerHttp.Open("POST", sUrl, False, sUser, sPw)
xmlServerHttp.setRequestHeader "Content-Type", "multipart/form-data; boundary=" + strBoundary
strText = "--" + strBoundary + eol + strField + Chr(34) + "title" + Chr(34) + eol + eol + "arjan" + eol
strText = strText + "--" + strBoundary + eol + strField + Chr(34) + "status" + Chr(34) + eol + eol + "test" + eol
strDomFile = "%%File..C125736A0020E23A.4c43d55f63bdca65c125736a0020e7eb.$Body.0.1F64"
'%%File.c125736a0020e23a.4c43d55f63bdca65c125736a0020e7eb.$Body.0.8F2
strText = strText + "--" + strBoundary + eol + strField + Chr(34) + strDomFile + Chr(34) + "; filename=" + Chr(34) + "snelkoppelingen.swf" + Chr(34) + eol + "Content-Type: */*" + eol + eol + getbase64code() + eol
strText = strText + "--" + strBoundary + "--" + eol + eol
Dim bPostData() As Byte
ReDim bPostData(Len(strText) - 1)
bPostData = StrConv(strText, vbFromUnicode)
Call xmlServerHttp.send(bPostData)
xmlServerHttp.getAllResponseHeaders
TextBox1.Text = xmlServerHttp.responseText + eol + strText
Exit Sub
errh:
MsgBox Error
End Sub
Function getbase64code() As String
Dim strfilepath As String
Dim intInFile As Integer
' this file is already base64 encoded
strfilepath = "c:\temp\IMGP0667.JPG"
' strfilepath = "c:\temp\snelkoppelingen.swf"
intInFile = FreeFile
Open strfilepath For Input As intInFile
lngChars = LOF(intInFile)
getbase64code = Input(lngChars, intInFile)
End Function |