Fragensteller
SOAP Abfrage gibt Fehler (UID-Nr.-Abfrage)

Frage
-
hallo füchse,
ich steh leider auf dem berühmten Schlauch. Folgender Code in VFP 9 liefert einen Fehler - kann mir jemand sagen warum? Für mich sieht er korrekt aus. Fehler meint in etwa - SoapMapper - Falscher Parameter - aber ich finde in der WSDL-Datei keinen Fehler. Vielen Dank schon im voraus!
lg
Manfred Paul_Include="_ws3.h"
Local locheckVatPort As "XML Web Service"
Local loWSHandler
lcuidnr="DE813615401"
Set Classlib To _ws3client.vcx In prowork1.Exe
loWSHandler = Newobject("WSHandler","_ws3client.vcx","prowork1.exe")
locheckVatPort = loWSHandler.SetupClient("http://ec.europa.eu/taxation_customs/vies/services/checkVatService.wsdl", "checkVatService", "checkVatPort")Local lcvalid As boolean
Local lcname As string
Local lcadresse As string
Local lccountrycode As String
Local lcvatnumber As String
Local lcdatum As datelccountrycode=Substr(lcuidnr,1,2)
lcvatnumber=Alltrim(Substr(lcuidnr,3,12))
locheckVatPort.checkVat(lccountrycode, lcvatnumber , @lcdatum ,@lcvalid, @lcname, @lcadresse)If l
endif
cvalid=.T.
***OK***
ELSE
***ungültig***Dienstag, 10. August 2010 13:43
Alle Antworten
-
Hi Manfred,
bist Du Dir sicher das der Pfad tatsächlich
http://ec.europa.eu/taxation_customs/vies/services/checkVatService.wsdl
und nicht einfach nur
http://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl
lautet?
Gruss / Best regards -Tom 010101100100011001010000011110000101001001101111011000110110101101110011Dienstag, 10. August 2010 14:07 -
Hab bei beiden Adressen das selbe Problem. Eigenartigerweise ist noch folgendes aufgefallen. Wenn ich mit obigen Code eien gültige UID aus Österreich prüfe - bekomme ich fehlerlos zu Resultat. Wenn eine ungültige geprüft wird - sollte "lcvalid" ja ein .F. liefern - da kommt aber dann der Fehler - ebenso ein Deutscher UID - egal ob gültig oder ungültig. Bin ich zu blöd dafür? Oder ist die EU da zu schwach was funktionierendes zu programmieren? *gg* Verwende den SOAP-SDK 3.0.
Hoffe ich komm da weiter - Danke für die Hilfe!
lg
Manfred PaulMittwoch, 11. August 2010 08:39 -
@Tom,Hmm. Auf beiden URLs kannste ne WSDL runterladen. Also sind erst mal beide korrekt. Aber die WSDL der kürzeren URL verweist wiederum auf die lange URL (der Verweis findet sich immer ganz unten im XML, bei wsdlsoap:address location)Damit ist dann die lange URL definitiv die korrekte Adresse.@Manfred:In deinem Code tust du zwar deine Variablen als LOCAL anlegen, aber du machst keine Zuweisung. Deine ganzen als LOCAL deklarierten Variablen sind momentan per Default auf LOGISCH mit dem Wert ..F. Das "AS STRING" is zwar nett gemeint, kümmert FoxPro im internen Betrieb aber nicht. Diese Typisierung ist nur notwendig für die Kommunikation mit andern COM-basierten exterennen Komponenten). FoxPro ist und bleibt eine untypsisierte Sprache, daher wird die Typ-Definition erst durch Zuweisung eines Wertes festgelegt.Also tu mal brav deine ganzen Parameter mit Defaultwerten füllen.
wOOdy
Microsoft Visual FoxPro Technology Advisor
Microsoft "Most Valuable Professional" from 1996 to 2009
Visit my XING profile! Don't know what XING is?*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.Visual FoxPro: It's magic !
(¸.·``··*
- Als Antwort vorgeschlagen Tom Borgmann Mittwoch, 11. August 2010 09:26
Mittwoch, 11. August 2010 08:43 -
@Woody
Danke für die Aufklärung - hab ich jetzt auch gemacht - leider immer noch keine Besserung. Bei ner gültigen UID aus Österreich gehts - bei ner ungültigen und jeder aus Deutschland kommt folgender Fehler:OLE IDispatch exception code 0 from SoapMapper: SoapMapper:Restoring data into SoapMapper name failed HRESULT=0x80070057: Falscher Parameter.
- Client:Unspecified client error. HRESULT=0x80070057: Falscher Parameter.
..Kann ich irgendwie auslesen welcher Parameter Falsch ist - was da ankommt und ich nicht korrekt entgegennehme.
Local lcvalid As boolean
lcvalid=.F.
Local lcname As string
lcname=""
Local lcadresse As string
lcadresse=""
Local lccountrycode As String
lccountrycode=""
Local lcvatnumber As String
lcvatnumber=""
Local lcdatum As date
lcdatum=DATE()Mittwoch, 11. August 2010 09:19 -
ich glaube den Grund gefunden zu haben - wenn jetzt noch jemand weiss wie man das löst - bin ich glücklich!
Also bei Abfrage einer gültigen UID aus Österreich bekommt man folgendes zurück (mit SOAPSonar ausgelesen)
<urn:checkVatResponse xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<urn:countryCode>AT</urn:countryCode>
<urn:vatNumber>U65786045</urn:vatNumber>
<urn:requestDate>2010-08-11+02:00</urn:requestDate>
<urn:valid>true</urn:valid>
<urn:name>PAUL Manfred</urn:name>
<urn:address>Europaplatz 4
A-4020 Linz</urn:address>
</urn:checkVatResponse>bei einer ungültigen bzw. einer UID aus Deutschland folgendes - es fehlen die werte name und adress und scheinbar macht dies das Problem aus.
<urn:checkVatResponse xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<urn:countryCode>DE</urn:countryCode>
<urn:vatNumber>813615401</urn:vatNumber>
<urn:requestDate>2010-08-11+02:00</urn:requestDate>
<urn:valid>true</urn:valid>
</urn:checkVatResponse>Wie bekomme ich nun das zum Laufen - mit den optionalen (und auch nicht - weglassen geht auch nicht) Parametern hin - den Wert dieser beiden Parameter würd ich nicht unbedingt brauchen - mir reicht das "valid"
danke im voraus und lg
Manfred Paul
Mittwoch, 11. August 2010 12:11 -
Scheinbar geht das mit dem SOAPToolkit SDK 3.0 von Microsoft gar nicht. Kann scheinbar keine optionalen Parameter. Gibts keine ander Variante dies zu lösen?
Eine EXE oder DLL die ich anspreche nkann - die WSDL und die beiden Parameter übergeben und dann ein .T. oder .F. zurückbekommen?
vielen Dank und lg
Manfred Paul
Mittwoch, 11. August 2010 16:19 -
Zumindest hat hier einer das selbe Problem:Vielleicht kontaktierst du mal den Kollegen, ob er inzwischen ne Lösung hat?
wOOdy
Microsoft Visual FoxPro Technology Advisor
Microsoft "Most Valuable Professional" from 1996 to 2009
Visit my XING profile! Don't know what XING is?*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`.Visual FoxPro: It's magic !
(¸.·``··*
Donnerstag, 12. August 2010 08:17 -
Hallo Manfred,mit SOAP 3.0 geht es nicht.Sobald ein keine Adresse zurückgegeben wird, crasht der Parser.Habe eine Routine in .NET geschrieben.LG Kurt"Manfred Paul" schrieb im Newsbeitrag news:d5fc2ff4-d7c4-4615-99a2-b5c3142c373d...
ich glaube den Grund gefunden zu haben - wenn jetzt noch jemand weiss wie man das löst - bin ich glücklich!
Also bei Abfrage einer gültigen UID aus Österreich bekommt man folgendes zurück (mit SOAPSonar ausgelesen)
<urn:checkVatResponse xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<urn:countryCode>AT</urn:countryCode>
<urn:vatNumber>U65786045</urn:vatNumber>
<urn:requestDate>2010-08-11+02:00</urn:requestDate>
<urn:valid>true</urn:valid>
<urn:name>PAUL Manfred</urn:name>
<urn:address>Europaplatz 4
A-4020 Linz</urn:address>
</urn:checkVatResponse>bei einer ungültigen bzw. einer UID aus Deutschland folgendes - es fehlen die werte name und adress und scheinbar macht dies das Problem aus.
<urn:checkVatResponse xmlns:urn="urn:ec.europa.eu:taxud:vies:services:checkVat:types">
<urn:countryCode>DE</urn:countryCode>
<urn:vatNumber>813615401</urn:vatNumber>
<urn:requestDate>2010-08-11+02:00</urn:requestDate>
<urn:valid>true</urn:valid>
</urn:checkVatResponse>Wie bekomme ich nun das zum Laufen - mit den optionalen (und auch nicht - weglassen geht auch nicht) Parametern hin - den Wert dieser beiden Parameter würd ich nicht unbedingt brauchen - mir reicht das "valid"
danke im voraus und lg
Manfred Paul
- Als Antwort vorgeschlagen Tom Borgmann Montag, 23. August 2010 09:27
Samstag, 21. August 2010 17:06 -
Hallo zusammen,
stehe vor demselben Problem (UID aus VFP checken), nur dass ich dem Soap-Problem bisher entkommen bin, weil ich noch gar nicht begonnen habe, es zu implementieren. Zeigt sich, dass das ohnehin sinnlos gewesen wäre. Könnte vielleicht einer von euch beiden, Manfred und Kurt, mal posten, was ihr da in .net gebastelt habt? Ich hab bisher mit .net nichts gemacht, und das würde mir wohl viel Krampf ersparen.
VG,
Werner
Donnerstag, 9. September 2010 14:38