[ASP+XML+JSP] xmldata request

Pagina: 1
Acties:

  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Ik word hier helemaal 8)7 ... Kan de 'missing link' niet vinden... :{

Ik heb een .asp pagina gemaakt op webserver 1 (IIS), die naar aanleiding van een query een stukje xml-code gebruikt om een query te doen op een JSP pagina.

Bijvoorbeeld:
input.asp?relnr=500

input.asp
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html><body>
<%
relnr = request.querystring("relnr")
id = Session.SessionID
%>

<form method="post" action="http://abs/abstestcenter/result.jsp" name="getdata" target="_new">

    <input type="hidden" name="input" value="
    &lt;REQUEST&gt;
        &lt;FUNCTION NAME=&quot;getpolissen&quot;&gt;
            &lt;PARAM NAME=&quot;relatienr&quot;&gt;<%
            response.write(relnr)
            %>&lt;/PARAM&gt;
        &lt;/FUNCTION&gt;
    &lt;/REQUEST&gt;
   ">

    <input type="hidden" name="absservice" value="ABSPolis">
    <input type="hidden" name="absip" value="10.0.0.37">
    <input type="hidden" name="absport" value="2000">
    <input type="hidden" name="absdatasource" value="">
    <input type="hidden" name="id" value="<%
    response.write(id)
    %>">
</form>
<SCRIPT LANGUAGE="Javascript">
document.getdata.submit()
</SCRIPT>
</body></html>


Dit ASP scriptje submit zichzelf dus automatisch a/d hand van een stukje javascript en het XML-formuliertje wordt gevuld met het relatienummer uit de query.

So far so good.

Hij gaat nu dus posten naar result.jsp op webserver 2 (Tomcat/Apache)

result.jsp
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--- knip ----
niet noodzakelijke database koppeling dus weggelaten
--- knip ----


    // Get the result
    XMLMessage msg;
    if (null == (msg = absClient.in.nextMessage())) {
        throw new Exception("Server disconnected !");
    }
    String output = msg.toString();
    // Disconnect from ABS
    absClient.disconnect();
%>
<%= output %>


De output van dit script is dus weer een XML-formulier.

Nu heb ik zelf een XML-parser geschreven die overweg kan met de resultaten van dit formulier (met dank aan de mensen van een vorig topic 8)). Echter
ik krijg de output van die .jsp met geen mogelijkheid in mijn vervolgende ASP-pagina. De vervolgpagina staat weer op webserver 1 (IIS).

Hier de code van het stuk vervolgpagina..

readxml.asp
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%
'Definiëer en open XML object
Dim xml
Set xml = Server.CreateObject("Microsoft.XMLDOM")
    xml.async = False

'Foutcontrole

If Not xml.load (Server.MapPath("polissen.xml")) Then
  Response.Write ("Fout: Kan XML document niet laden<br>" & Chr(13))
Else
  If xml.parseError.errorCode > 0 Then
    response.write ("Fout: Kan document niet verwerken<br>"& Chr(13))
    response.write ("Code: " & xml.parseError.errorCode & Chr(13))
  Else

'Begin XML verwerking

--- knip ----
niet noodzakelijk dus weggelaten
--- knip ----

'Afwerking en afsluiten XML document  
 End if
End If
Set xml = Nothing
%>


De vervolg ASP opent nu dus een bestand. Daar heb ik geen moer aan, ik wil de output van die JSP openen..... Hoe ga ik dat fixxen :?

[ Voor 42% gewijzigd door ScuL op 03-12-2002 14:17 ]

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Door die output in je XMLDOM te fietsen :)

Iets in de trend van
code:
1
Set XMLDOMobject =  JSPrequest.responseXML


Ik doe ongeveer hetzelfde; xml message creëren, versturen naar andere server, xml response terugkrijgen en die inlezen in een XMLDOM object.

[ Voor 46% gewijzigd door eNaSnI op 03-12-2002 14:47 ]

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Ik weet wel hoe het moet maar ik kan geen weg vinden om het in code om te zetten :P
Zou je misschien iets duidelijker kunnen zijn over waar je dat stukje code neerzet? In de JSP of in de uiteindelijke ASP?

[ Voor 2% gewijzigd door ScuL op 03-12-2002 14:59 . Reden: tekstuele verbeteringen ]

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Je hebt een ASP page waarvandaan je je XML naar je JSP knalt. De response wat de JSP weer naar je ASP stuurt ontvang je en schrijf je weg in je XMLDOM (in je ASP want daar wil je het toch hebben?) Dus ipv twee asp pages één en nadat de query's zijn uitgevoerd de responsexml opslaan. Tis voor mij ook nog nieuw maar het lijkt vrij veel op wat ik nu wel draaiend hebt, behalve dat ik handmatig submit.

[ Voor 35% gewijzigd door eNaSnI op 03-12-2002 15:31 ]

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Volgens mij is jouw oplossing precies wat ik zoek. Ik submit namelijk ook handmatig dmv een form en niet via een of ander DOMXML commando in de eerste asppagina.
Echter alle tutorials zijn er op gebouwd dat je submit en ontvangt in één en dezelfde ASP page en dat wil ik liever niet hebben want dan kan ik de hele rotzooi om gaan zitten bouwen. Ik heb dus 2 losse ASP pages en een JSP, als dat niet mogelijk blijkt te zijn dan gooi ik het wel om.

Zou je misschien dat stuk code van jouw koppeling willen posten?

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Ik was misschien niet compleet duidelijk maar ik heb het idd zoals in diverse voorbeelden staat met 1 asp pagina. Eventueel kan je natuurlijk wel in asp1 een sessie-xmldom object vullen met het resultaat uit je JSP en dit object vervolgens in asp2 gebruiken. Dit lijkt me redelijk wat je in gedachten hebt, toch? Zoals het omschreven staat in je eerste post wil je data gaan pushen naar de cliënt en dat lijkt me vrij lastig.

[ Voor 26% gewijzigd door eNaSnI op 03-12-2002 16:09 ]

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Ja dat begreep ik uit je laatste post; Ik heb een poging gedaan omdat in een sessie te gieten maar dan loop ik tegen nog meer obstakels aan. (Zie ik ook de variabel id in input.asp). Als het makkelijker is om het in 1 ASP te gieten dan moet dat maar.

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Ik heb nu (a/d hand v/e tutorial) dit toevoegd aan de eerste ASP:

code:
1
2
3
4
5
6
<%
set xmlHTTP = CreateObject("Microsoft.XMLHTTP") 
xmlHttp.open("GET", "http://abs/abstestcenter/result.jsp", false)
xmlHttp.send()
xml=xmlHttp.responseText
%>


maar krijg een 500-error terug.. er klopt dus iets nog niet helemaal.

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Sorry, om 17:00 houd de werkdag op :)

Mijn code:
code:
1
2
3
4
5
6
7
8
    Set xmlrequest = Server.CreateObject("Microsoft.XMLHTTP")

    xmlrequest.Open "POST", "http://****/WebServices/IModeServer.asp", False
    xmlrequest.setRequestHeader "Content-Type", "text/xml"

    xmlrequest.Send ( CreateXMLMessage(Session("username"), Session("password"), "", "GetIssuedVoucherList" )
            
    set Session("xmlresponse") = xmlrequest.responseXML


Edit: sorry voor de layout ;)

[ Voor 76% gewijzigd door eNaSnI op 04-12-2002 10:53 ]

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Ja ik had al zo'n vermoeden. Voor mij ook :)
Thanx, ik ga het zo eens uitproberen.

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Ben benieuwd of je er uitkomt, die 500 ligt aan de server iig dus ik denk dat de response van je jsp geen goede XML is.

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
De output van de JSP begint met een aantal witregels.. zou het daardoor komen? Ik weet niet waar ze vandaan getoverd worden want alles lijkt goed te staan.

-edit-

ik heb nu het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", "http://abs/abstestcenter/result.jsp?input=%0D%0A%09%
3CREQUEST%3E%0D%0A++++++++%3CFUNCTION+NAME%3D%22getpolissen%
22%3E%0D%0A++++++++++++%3CPARAM+NAME%3D%22relatienr%22%
3E125%3C%2FPARAM%3E%0D%0A++++++++%3C%2FFUNCTION%3E%0D%
0A++++%3C%2FREQUEST%3E%0D%
0A+++&absservice=ABSPolis&absip=10.0.0.37&absport=2000&absdatasource=&id
=544318679", False
xml.Send

Response.Write xml.responseText

Set xml = nothing
%>


Zoals je ziet heb ik handmatig een formulier 'gesimuleerd' door gewoon zo'n url te kopieren en hier naar te verwijzen in de XML request. Ik krijg nu gewoon keurig de output van de JSP terug in xml.responseText! Dat is op zich al iets om vrolijk van te worden...

Echter hoe krijg ik het voor elkaar dat ik dat formulier niet simuleer maar werkelijk uit die eerste ASP haal via die autosubmit. Ik moet de XML-request doen onder de querynaam input anders pakt de JSP hem niet. Kan dus geen xml.Open ("POST") doen, toch :? Want dan krijg ik die hele querytags niet mee... :{

[ Voor 84% gewijzigd door ScuL op 04-12-2002 12:30 ]

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
http://www.4guysfromrolla.com/webtech/110100-1.2.shtml

Wel een handige site voor van alles over ASP.

Oftewel, je input.asp verstuurt je request niet goed :)

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Ik ben er nu bijna. Ik heb alleen moeite om het XML-request formulier goed naar de JSP toe te sturen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
xmlstring = "%0D%0A%09%3CREQUEST%3E%0D%0A++++++++%3CFUNCTION+NAME%
3D%22getpolissen%22%3E%0D%0A++++++++++++%3CPARAM+NAME%3D%22relatienr%
22%3E500%3C%2FPARAM%3E%0D%0A++++++++%3C%2FFUNCTION%3E%0D%0A++++%
3C%2FREQUEST%3E%0D%0A+++"

  Response.Buffer = True
  Dim objXMLHTTP, xml
  Set xml = Server.CreateObject("Microsoft.XMLHTTP")
    
  xml.Open "POST", "http://abs/abstestcenter/result.jsp", False

sendstring = "input=" & xmlstring & "&absservice=ABSPolis&absip=10.0.0.37&absport=2000&absdatasource="
  xml.Send (sendstring)


Wat is het correcte format hiervoor?

Ik moet dus naar result.jsp posten met als query input het xml formulier en dan nog de andere query's (zie sendstring).

[ Voor 29% gewijzigd door ScuL op 04-12-2002 15:17 ]

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Ik post naar ASP dmv XMLDOM en denk niet dat zoals je het nu probeert gaat werken. Als ik het goed begrijp wil je een JSP aanroepen en vervolgens het resultaat hiervan (XML) inlezen. Hier nog een stukje code zoals mijn sendstring eruit ziet:

code:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0"?>
<LoyaltyService Version="1.0">
<Session><Identification>
<UserName>123456789012345</UserName>
<Password>123456789012345</Password>
</Identification></Session>
<Submit Cmd="GetIssuedVoucherList">
<MediaId>123456789012345</MediaId>
<MediaType>UTN</MediaType>
</Submit></LoyaltyService>

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Het is me nu via een omweg gelukt.
Mijn sendstring kan ik niet uit een .xml file of XSL template halen. Hij moet per se uit een pure text string worden opgebouwd omdat ik een ASP variabele moet invoegen in het XML-formulier voordat ik hem post.

Ik heb nu de volgende code gebruikt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%
relnr = request.querystring("relnr")

  Response.Buffer = True
  Dim objXMLHTTP, xml
  Set xml = Server.CreateObject("Microsoft.XMLHTTP")
    
  xml.Open "POST", "http://abs/abstestcenter/result.jsp?input=%0D%0A%09%
3CREQUEST%3E%0D%0A++++++++%3CFUNCTION+NAME%3D%22getpolissen%
22%3E%0D%0A++++++++++++%3CPARAM+NAME%3D%22relatienr%22%3E"  &
 relnr &  "%3C%2FPARAM%3E%0D%0A++++++++%3C%2FFUNCTION%3E%0D%
0A++++%3C%2FREQUEST%3E%0D%
0A+++&absservice=ABSPolis&absip=10.0.0.37&absport=2000&absdatasource=&id=544318679", False

    xml.Send ()

  Response.Write xml.statusText & "<BR><BR>" & Chr(13)
  Response.Write xml.responseText

  Set xml = Nothing
%>


Geh.. volgende probleem. Hoe zet ik de xml.responsetext om naar een XML formulier zodat ik mijn zelfgebouwde parser eroverheen kan halen.
als ik nu een documentElement object activeer op die xml.responsetext krijg ik een foutmelding.. (logisch).. :P

[ Voor 14% gewijzigd door ScuL op 04-12-2002 16:29 ]

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
Jaaaaa ik heb hem! :D
Na 3 dagen ploeteren moet dit dan de correcte methode zijn:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
'Haal relatie uit querystring
relnr = request.querystring("relnr")

  'Post XML query naar JSP
  Response.Buffer = True
  Dim objXMLHTTP, xml
  Set xml = Server.CreateObject("Microsoft.XMLHTTP")
    
  xml.Open "POST", "***adres***", False
  xml.Send ()

    set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
        xmlDoc.async = False
        xmlDoc.loadXML (xml.responseText)

'Begin XML verwerking

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Idd met loadXML :) speciaal voor het inlezen van stringetjes

Een andere optie is nog:
code:
1
set xmlDoc = xml.responseXML

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
daar ging ie van over de zeik, vraag me niet waarom.. dan maar via plaintext hoor :)

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Dan is je response geen geldige XML ;)

Wie zoekt, zal vinden http://www.google.com


  • ScuL
  • Registratie: Januari 2000
  • Laatst online: 11:22
dan klopt er toch iets niet helemaal want als ik 't via plaintext doen en dan via xmlDoc.loadXML (xml.responseText) weer vanuit de plaintext importeer dan gaat ie niet over de zeik! (vreemd toch?) :{

ProMods ETS2 uitbreiding - Mijn tijdszone is UTC+13


  • eNaSnI
  • Registratie: November 2001
  • Niet online
Wow, dat is idd wazig. Maar goed, ben toch al niet zo happy met alles van MS. Werk nu met een ISAPI filter wat dus om een of andere vage reden met HTTP 1.1 prima werkt en onder HTTP 1.0 niet meer :(

Edit: probleem was eigen domme schuld, filter is toppie :)

[ Voor 14% gewijzigd door eNaSnI op 11-12-2002 11:28 ]

Wie zoekt, zal vinden http://www.google.com

Pagina: 1