Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[VBA access] Webservice aanroepen*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben van plan om een webservice die werkt met XMLRPC aan te roepen vanuit MS ACCESS.

Ik kan echter alleen oplossingen vinden voor VB.net.

Wanneer ik zelf met stringmanupulaties e.e.a. probeer te bewerkstelligen, krijg een een foutmelding terug van de service die een verkeerde afsluiting van het document suggereert.
Het zelfde gebeurd wanneer ik met MSXML een DOMdocument opbouw.

Enige suggesties?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 30-11 19:45

TeeDee

CQB 241

Zonder code wordt het een beetje lastig.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Bijgaand de code wat ik nu gebruik. met e.e.a. afgesterd.

Function bouw(tag$, Inhoud$) As String

bouw = "<" & tag$ & ">" & Inhoud$ & "</" & tag$ & ">" & Chr$(10)

End Function





username$ = "**"
Password$ = "**"


xmlheader = "<?xml version=""1.0""?>"

Text$ = bouw("methodCall", _
bouw("methodname", "**") & _
bouw("params", bouw("param", bouw("value", bouw("struct", _
bouw("member", _
bouw("name", "username") & _
bouw("value", _
bouw("string", username$))) & _
bouw("member", _
bouw("name", "password") & _
bouw("value", _
bouw("string", Password$))) & _
bouw("member", _
bouw("name", "postcode") & _
bouw("value", _
bouw("string", Left$([Postcode], 4) & Right$([Postcode], 2)))) & _
bouw("member", _
bouw("name", "Huisnummer") & _
bouw("value", _
bouw("string", [Huisnummer]))))))))

Text$ = xmlheader & Text$ & Chr$(10)

Set vraag = New DOMDocument50
vraag.loadXML (Text$)


Dim xpress As New XMLHTTP30

xpress.Open "Get", "http://**", False
xpress.setRequestHeader "/", ""
xpress.setRequestHeader "User-Agent", "*"
xpress.setRequestHeader "Host", "*"
xpress.setRequestHeader "Content-Type", "text/xml"
xpress.setRequestHeader "Content-length", str$(Len(Text$))

xpress.send vraag

Dim antwoord As New MSXML2.DOMDocument30
Set antwoord = xpress.responseXML

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 30-11 19:45

TeeDee

CQB 241

1. Gebruik [code]...[/code]
2. Doet ook even een correcte foutmelding erbij...

Ik vermoed dat je ergens iets niet afsluit (zoals de foutmelding aangeeft). Dit kan je beter even debuggen door te kijken wat je naar de Webservice zendt.

De manier waarop je Text$ vult is nu niet echt duidelijk (snap 't wel, alleen het staat niet duidelijk)

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Ik stuur:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?>
<methodCall><methodname>*</methodname>
    <params><param><value><struct><member><name>username</name>
                        <value><string>*</string>
                        </value>
                    </member>
                    <member><name>password</name>
                        <value><string>*</string>
                        </value>
                    </member>
                    <member><name>postcode</name>
                        <value><string>1234ab</string>
                        </value>
                    </member>
                    <member><name>Huisnummer</name>
                        <value><string>1</string>
                        </value>
                    </member>
                </struct>
            </value>
        </param>
    </params>
</methodCall>



En ik krijg:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0"?>
<methodResponse>
    <fault>
        <value>
            <struct>
                <member>
                    <name>faultCode</name>
                    <value><int>105</int></value>
                </member>
                <member>
                    <name>faultString</name>
                    <value><string>XML error: Invalid document end at line 1</string></value>
                </member>
            </struct>
        </value>
    </fault>
</methodResponse>

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 30-11 19:45

TeeDee

CQB 241

En heb je in de documentatie van de Webservice gekeken wat fout 105 is?
Heb je de mogelijkheid om de Webservice te debuggen?
Werkt de Webservice überhaupt wel correct?

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

probeer de xmlrpc specificatie zo goed mogelijk op te volgen. de xml is well-formed maar je zet er wel newline (chr(10)) tussen en ook de methodName-aanroep is niet conform.
nog andere vragen :
goede poort?
200 ok responsecode?

Verwijderd

Topicstarter
In de documentatie van XMLRPC (specs XMLRCP) kan ik geen specifieke foutaanduiding vinden.

De service werkt wel, maar debuggen kan ik niet.


En verder inderdaad een responsecode 200

Verwijderd

Topicstarter
Oh ja,

Zonder de newline en de goede methodName de zelfde response.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

en wat is je methodName nu precies?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

aan serverzijde was er een probleem met een bepaalde versie van php 5.2 aimgh.

Verwijderd

Topicstarter
De methodeName is adresxpress.postcode, maar dat maakt -dacht ik- geen verschil.

De problemen met PHP aan de serverzijde treden niet op wanneer de de -online- testversie probeer.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

[disclaimer] ik ben niet bekend met het DomDocumentObject en eventuele defaultproperties...
code:
1
2
3
Set vraag = New DOMDocument50
xpress.setRequestHeader "Content-length", str$(Len(Text$))
xpress.send vraag

Je bent je ervan bewust dat je het object verstuurt en niet de text$?

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Jawel, hiervan ben ik me bewust. Dit heb ik uit een voorbeeld van MSDN.
Verder heb ik ook al een keer gewoon tekst$ verstuurd, met het zelfde resultaat.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op vrijdag 29 augustus 2008 @ 19:12:
Jawel, hiervan ben ik me bewust. Dit heb ik uit een voorbeeld van MSDN.
Verder heb ik ook al een keer gewoon tekst$ verstuurd, met het zelfde resultaat.
doe eens een linkje naar dat MSDN voorbeeld.
nog beter: vermeld het in je startpost


Ik zie namelijk weinig vreemds in je code, afgezien van die maffe afsluiting met chr(10) (heb je ook die aan het einde weggehaald?), de send(object) waar de documentatie send(string) geeft en als meest wilde gok dat de service zicht verslikt in een 1 als string, maar dat zou bijna onmogelijk zijn.
Parameters gechechked a.d.h.v. de documentatie naar ik aanneem?

[ Voor 33% gewijzigd door Lustucru op 29-08-2008 19:22 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Bij deze de link naar MSDN

Ik heb de newlines bij weggehaald maar nog steeds het zelfde resultaat.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

xpress.Open "Get", "http://**", False
xpress.send vraag
Da's fout. Om iets te versturen open je met het 'post'attribuut. :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Lustucru schreef op vrijdag 29 augustus 2008 @ 23:16:
[...]

Da's fout. Om iets te versturen open je met het 'post'attribuut. :)
Je hebt helemaal gelijk !! 8)7

Allemaal bedankt voor het meekijken.

Het moest dus zijn:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 Set vraag = New DOMDocument30
 vraag.loadXML (Text$)


     
    Dim xpress As New XMLHTTP30
    
    xpress.Open "Post", "**", False
    xpress.setRequestHeader "/", ""
    xpress.setRequestHeader "User-Agent", "**"
    xpress.setRequestHeader "Host", "**"
    xpress.setRequestHeader "Content-Type", "text/xml"
    xpress.setRequestHeader "Content-length", str$(Len(Text$))
            
    xpress.send vraag
Pagina: 1