locked
SOAP Abfrage gibt Fehler (UID-Nr.-Abfrage) RRS feed

  • 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 date

    lccountrycode=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 010101100100011001010000011110000101001001101111011000110110101101110011
    Dienstag, 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 Paul

     

    Mittwoch, 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 Kurt,

    nach einiger Recherche bin ich leider zum selben Ergebniss gekommen - geht nicht.

    Hab so wie du einfach was in .NET geschrieben - jetzt tuts wie gewünscht - trotzdem danke an alle für die Hilfe.

     

    lg

    Manfred

     

    Montag, 23. August 2010 09:22
  • 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