[ASP] Foward script werkt niet helemaal goed

Pagina: 1
Acties:
  • 121 views sinds 30-01-2008
  • Reageer

  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Ik heb het volgende probleem en ben totaal niet thuis in ASP.

Ik moet een XML request sturen naar server PROV01. Deze server staat alleen XML requests toe die afkomstig zijn vanaf de lokale machine, wat in dit geval niet zo is. Daartoe heb ik een ASP script geschreven (dat was en is de enige scripttaal beschikbaar op die server) dat de requests forward zodat ik de applicatie die de XML files verstuurt lokaal kan ontwikkelen.

Dit script spreek ik aan door een POST request op http://PROV01/_PassThru/PassThru.aspx?FWD=iets.asmx. Dat forwarden gaat opzich wel goed maar ik heb een ander raar probleem.

Ik stuur bijvoorbeeld dit XML request:

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
                <ModifyUser xmlns="http://provisioning.microsoft.com/webservices">
                        <ldapPath>LDAP://geldig,ldap,pad</ldapPath>
                        <displayName>Mark</displayName>
                        <givenName>Mark</givenName>
                        <middleName />
                        <sn>OV</sn>
                        <initials>M</initials>
                        <description>Testaccount</description>
                        <propertiesXmlString>&lt;properties&gt;&lt;property name="street"&gt;&lt;value&gt;somestreet&lt;/value&gt;&lt;/property&gt;&lt;property name="l"&gt;&lt;value&gt;somelocation&lt;/value&gt;&lt;/property&gt;&lt;/properties&gt;</propertiesXmlString>
                        <preferredDomainController>ad01.ms-services.domain.tld</preferredDomainController>
                </ModifyUser>
        </soap:Body>
</soap:Envelope>


Als ik het ASP script daarna laat tonen wat 't gaat sturen laat-ie dit zien:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
                <ModifyUser xmlns="http://provisioning.microsoft.com/webservices">
                        <ldapPath>LDAP://geldig,ldap,pad</ldapPath>
                        <displayName>Mark</displayName>
                        <givenName>Mark</givenName>
                        <middleName />
                        <sn>OV</sn>
                        <initials>M</initials>
                        <description>Testaccount</description>
                        <propertiesXmlString>&lt;properties&gt;&gt;&lt;value&gt;somestreet&lt;/value&gt;&lt;/property&gt;&gt;&lt;value&gt;somelocation&lt;/value&gt;&lt;/property&gt;&lt;/properties&gt;</propertiesXmlString>
                        <preferredDomainController>ad01.ms-services.domain.tld</preferredDomainController>
                </ModifyUser>
        </soap:Body>
</soap:Envelope>&lt;property name="street"&lt;property name="l"

Opzich kloptie helemaal, op het laatste stukje na. Na de eindtag </soap:Envelope> mag niets meer komen, daardoor lukt de request niet. Opmerkelijk is ook dat wat na de laatste tag komt, eigenlijk in de propertiesXmlString-tag hoort. Op deze manier:

code:
1
2
3
4
5
6
7
8
In de response staan
- ;&gt;&lt;value&gt;somestreet&lt;/value&gt;&lt;/property&gt;
- &lt;property name="street"

Combineer ze en je hebt:
- lt;property name="street"&gt;&lt;value&gt;somestreet&lt;/value&gt;&lt;/property&gt;

hetgeen in de request staat


Dit is de source code van mijn script. Nogmaals; ik ben totaal niet thuis in de ASP wereld en heb de enige functie die erin zit dan ook schaamteloos geript. Enkel het stukje tussen de ASP tags is zelf gemaakt.

ASP:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<%@ Page aspcompat=true validateRequest="false" %>

<script runat="server" language="vb">
Private Function URLDecode(byVal encodedstring)
    Dim strIn, strOut, intPos, strLeft
    Dim strRight, intLoop
    strIn  = encodedstring : strOut = _
         "" : intPos = Instr(strIn, "+")
    Do While intPos
        strLeft = "" : strRight = ""
        If intPos > 1 then _
            strLeft = Left(strIn, intPos - 1)
        If intPos < len(strIn) then _
            strRight = Mid(strIn, intPos + 1)
        strIn = strLeft & " " & strRight
        intPos = InStr(strIn, "+")
        intLoop = intLoop + 1
    Loop
    intPos = InStr(strIn, "%")
    Do while intPos
        If intPos > 1 then _
            strOut = strOut & _
                Left(strIn, intPos - 1)
        strOut = strOut & _
            Chr(CInt("&H" & _
                mid(strIn, intPos + 1, 2)))
        If intPos > (len(strIn) - 3) then
            strIn = ""
        Else
            strIn = Mid(strIn, intPos + 3)
        End If
        intPos = InStr(strIn, "%")
    Loop
    URLDecode = strOut & strIn
End Function
</script>

<%

' Variabelen initialiseren
Dim Xml     = Server.CreateObject("Microsoft.XMLHTTP")
Dim AuthStr = Request.ServerVariables("HTTP_Authorization").toString()

' Wat we moeten sturen opschonen
Dim sendOut = URLDecode(Request.Form.toString())

' Verbinding opnenen
Xml.Open("POST", "http://localhost/mpsws/" & Request.QueryString("FWD"), False)

' Headers juist zetten
Xml.setRequestHeader("Content-Type", "text/xml; charset=utf-8")
Xml.setRequestHeader("Authorization", AuthStr)
Xml.setRequestHeader("SOAPAction", """http://provisioning.microsoft.com/webservices/" & Request.QueryString("SOAPAction") & """")

' Request versturen
Xml.Send(sendOut.toString())

' Antwoord tonen
Response.Write(Xml.responseText)

%>


Heeft iemand enig idee waarom er meer informatie achteraan komt, terwijl ik daar geen aanleiding toe geef...? Thx! :)

[ Voor 3% gewijzigd door Mafkees op 12-02-2010 13:00 ]


Verwijderd

Je hebt het gewoon stuk gemaakt :P
Modbreak:Collega of niet, zeg dan niks.

[ Voor 39% gewijzigd door NMe op 25-01-2007 16:00 ]


  • Setragasj
  • Registratie: Augustus 2001
  • Laatst online: 01-12 11:33

Setragasj

is using radars to communicate

Ik als totale ASP noob hoor, correct me if I'm wrong, maar misschien moet je in je XML document in je <propertiesXmlString> van dit:

ASP.NET Visual Basic:
1
name="street"


dit maken:

ASP.NET Visual Basic:
1
name=&quot;street&quot;

[ Voor 12% gewijzigd door Setragasj op 25-01-2007 16:19 ]

<Typ een persoonlijk bericht>


  • Mafkees
  • Registratie: Oktober 2003
  • Niet online
Setragasj schreef op donderdag 25 januari 2007 @ 16:19:
Ik als totale ASP noob hoor, correct me if I'm wrong, maar misschien moet je in je XML document in je <propertiesXmlString> van dit:

ASP.NET Visual Basic:
1
name="street"


dit maken:

ASP.NET Visual Basic:
1
name=&quot;street&quot;
Thanks! Het was de oplossing nog niet helemaal maar kwam wel een stukje dichterbij. Ik kreeg nu wel het stukje tussen quotes te zien (dus "street") maar nu ging het fout bij de = tekens. Dus waarom dan ook niet het = teken in HTML veranderen (zie www.lookuptables.com). De tag ziet er nu dus als volgt uit:

XML:
1
2
3
4
5
6
7
<propertiesXmlString>
    &lt;properties&gt;
        &lt;property name=&quot;street&quot;&gt;&lt;value&gt;straaaaaaaatnaam&lt;/value&gt;&lt;/property&gt;
        &lt;property name=&quot;postalCode&quot;&gt;&lt;value&gt;1337 BC&lt;/value&gt;&lt;/property&gt;
        &lt;property name=&quot;l&quot;&gt;&lt;value&gt;somesssssslocation&lt;/value&gt;&lt;/property&gt;
    &lt;/properties&gt;
</propertiesXmlString>

Het wordt er niet echt duidelijker op :P Gelukkig hoef je het maar 1x in te voeren... wel een beetje gaar eigenlijk dat het systeem waarmee ik communiceer het zo wil hebben :X