Page 1 sur 2

Agent LotusScript Ajax sous Linux

MessagePublié: 05 Mai 2010 à 14:56
par bigBenTem
Bonjour à tous,

je suis sur un petit souci purement technique...
Je développe une appli Web qui fait des appel Ajax pour l'utilisateur j'ai donc utilise le code trouvé ici-même qui fait des merveilles....

Code : Tout sélectionner
Function Ajax_LS(wUrl As String, wRequestType As String, wPost As String, wUnique As Integer) As String
   Dim XHRequest    As Variant
   Dim url As String
   
   On Error Goto ErreurHandle
   
   If Trim(wUrl) = "" Then
      Error 9999,"Url is empty"
      Exit Function
   End If
   
   url = Trim(wUrl)
   'Print "<p>" + url + "</p>"
   If wUnique = True Then
      If Instr(1, Url, "?") > 0 Then
         Url = Url + "&" + Format$(Now, "yyyymmddhhnnss")+Cstr(Rnd())
      Else
         Url = Url + "?" + Format$(Now, "yyyymmddhhnnss")+Cstr(Rnd())
      End If     
   End If
   'Msgbox (URL)
   'Print "<p>" + URL + "</p>"
   
   Set XHRequest = CreateObject("Microsoft.XMLHTTP")
   
   Select Case Ucase(Trim(wRequestType))
      
   Case  "POST","P"
      XHRequest.open "POST", url, False, "", ""
      XHRequest.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
      XHRequest.send(wPost)
   Case "GET","G"
      XHRequest.open "GET", url, False, "", ""
      XHRequest.send("")
   Case ""
      Error 9999,"wRequestType is Empty"
      Exit Function
      
   Case Else
      Error 9999,"Bad Requeste Type : "+wRequestType
      Exit Function
      
   End Select
   
   If Trim(Cstr(XHRequest.status)) = "200" Then
      Ajax_LS = XHRequest.responseText
      Set XHRequest= Nothing
      
   Else
      Error 9999,XHRequest.statusText +Chr(10)+ XHRequest.status
      Exit Function
   End If
   
   Exit Function
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Print "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl)
   Set XHRequest= Nothing   
   Ajax_LS = ""
   Exit Function
End Function


Mon souci vient de la ligne
Code : Tout sélectionner
Set XHRequest = CreateObject("Microsoft.XMLHTTP")

tout se passait bine jusqu'à ce que je passe en environnement de qualif qui est biensur sous linux... Bonne nouvelle il connait pas microsoft :/

Une idée pour modifier l'appel ?

MessagePublié: 05 Mai 2010 à 14:58
par Michael DELIQUE
salut

tu peux pas faire ça en JS ? vue que c'est du web ?

MessagePublié: 05 Mai 2010 à 15:02
par bigBenTem
oui j'aurais aimer mais j'appelle une url qui n'est pas dans le même domaine que mon appli Domino et qui est derrière la DMZ, donc seulement accessible par le Serveur Domino et pas par le client...

Mon domino fait le relai et renvoi le résultat à l'appel Ajax en JS fait par le client

MessagePublié: 05 Mai 2010 à 15:10
par amahi
Normalement tu as deux facon de le faire, une pour firefox, une pour IE.

Pour firefox c'est:
set variable = new XMLHttpRequest() ;

MessagePublié: 05 Mai 2010 à 15:11
par Michael DELIQUE
tu as regardé si la command JS

XHRequest = new XMLHttpRequest(); était transposable ?

MessagePublié: 05 Mai 2010 à 15:19
par bigBenTem
Michael DELIQUE a écrit:tu as regardé si la command JS

XHRequest = new XMLHttpRequest(); était transposable ?


j'essai de faire des tests :
Set XHRequest = CreateObject("XMLHttpRequest()")
dans le genre mais pour l'instant rien ne passe toujours le super message d'erreur "Operation ot supproted on this platform"

sinon existe-t-il un moyen pure LS d'appeler une url de récupérer le résultat sans passer par ce fameux module Ajax ?
Un truc du genre OpenUrl

MessagePublié: 05 Mai 2010 à 15:46
par Michael DELIQUE
re,

j'ai au point un fonction pour tester les objet ole

Code : Tout sélectionner
sub
   On Error Resume Next
   Dim XHRequest  As Variant
   
   Set XHRequest =CreateObject("Microsoft.XMLHTTP")
   If TestOLEObject(XHRequest) = False Then
      Msgbox "false"
   Else
      Msgbox "true"
   End If
   XHRequest = Null
   Set XHRequest =CreateObject("MSXML2.XMLHTTP")
   If TestOLEObject(XHRequest) = False Then
      Msgbox "false"
   Else
      Msgbox "true"
   End If
   XHRequest = Null
   Set XHRequest = CreateObject("MSXML.XMLHTTPRequest")
   If TestOLEObject(XHRequest) = False Then
      Msgbox "false"
   Else
      Msgbox "true"
   End If

end sub

Public Function TestOLEObject(vrObject As Variant) As Boolean
   
   'cette fonction test si un objet ole est utilisable
   
   On Error Goto ErreurHandle
   
   TestOLEObject = False
   
   If Datatype(vrObject) = 9 Then
      If Not  vrObject Is Nothing Then
         TestOLEObject = True
      End If
   End If
   
   Exit Function
ErreurHandle:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   TestOLEObject = False
   Exit Function
End Function

MessagePublié: 05 Mai 2010 à 15:51
par Michael DELIQUE
le nouvelle appel ressemble à ça

Code : Tout sélectionner
   On Error Resume Next
   Set XHRequest = CreateObject("Microsoft.XMLHTTP")
   If TestOleObject(XHRequest) = False Then
      Set XHRequest =CreateObject("MSXML2.XMLHTTP")
      If TestOleObject(XHRequest) = False Then
         Set XHRequest = CreateObject("MSXML.XMLHTTPRequest")
      End If
   End If
   On Error Goto ErreurHandle


a essayé sous linux mais bon ça reste du MS

MessagePublié: 05 Mai 2010 à 16:09
par Michael DELIQUE
re

essais ça pour voir (j'ai pas de serveur sous linux donc pour les testes...)

Code : Tout sélectionner
Set XHRequest = CreateObject("Active.HTTP.Request")
   If TestOLEObject(XHRequest) = False Then
      Msgbox "false"
   Else
      Msgbox "true"
   End If
   

MessagePublié: 05 Mai 2010 à 16:13
par Michael DELIQUE
essais ça aussi

Code : Tout sélectionner
Set  XHRequest = CreateObject("MSXML2.ServerXMLHTTP")

MessagePublié: 05 Mai 2010 à 17:23
par bigBenTem
je teste tout ça demain et je te raconte j'ai trouvé aussi des pistes sur le forum Notes.net quand j'ai résolu je posterais dans les tips!! ;)

MessagePublié: 05 Mai 2010 à 19:18
par roubech
bigBenTem a écrit:sinon existe-t-il un moyen pure LS d'appeler une url de récupérer le résultat sans passer par ce fameux module Ajax ?
Un truc du genre OpenUrl


WebService ?

MessagePublié: 06 Mai 2010 à 08:08
par bigBenTem
Bon après les tests de tout ceci ce matin, la réponse est non pour tout les test ça ne fonction pas!

Pour le WebService, techniquement c'est ce que je fait mon client appel un service sur le serveur qui appel un autre serveur, traite et renvoi le résultat!

Bon après plusieurs test je viens d'arriver à ça... (On avance doucement mais on avance!)

Code : Tout sélectionner
Set doc = db.GetDocumentByURL(url, True)
   pageBody = doc.GetItemValue("Body")(0)
   Print "<p>PageBody = " + pageBody + "</p>"


Le message d'erreur est : The WEB Navigator retrieval process is not running

MessagePublié: 06 Mai 2010 à 08:41
par amahi
WebRetrieval est une tache domino ;-)

MessagePublié: 06 Mai 2010 à 08:44
par abertisch
amahi a écrit:WebRetrieval est une tache domino ;-)


Je passerais plutôt par du java, c'est d'ailleurs IBM qui le préconise.