How to use this service ??? WSDL available

E

Edje.Rommel

Hello,

I've have a problem with a webservice. I just want to validate a VAT
number by country code and VAT numer. The return value should be like
"it's valid" and/or the name where it's registered to.

To do this i can access the webservice on the following location:
http://ec.europa.eu/taxation_customs/vies/api/checkVatPort

A WSDL file is also available:
http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl.

My question is how can i get the results i want. Can someone help me
with just the little module that does the request.

I already right-click on Web reference and added
http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl, but
when i want to use checkvat(country,VAT), it exepect 3 other fields and
the return type seem to be date.

My understanding is that i only have to use 2 parameters (via XML ?),
and retrieve a string value (XML ?)

I just need something like
returnvalue = doRequest(country,VAT).valid
Name = returnvalue.Name
Valid = returnvalue.valid
etc.....


Thanks for all your help.

Regards,

Edje
 
A

adm

My question is how can i get the results i want. Can someone help me
with just the little module that does the request.

Once you've added the web reference, you can do this sort of thing in a
method or sub:

Dim ws As New WindowsApplication1.eu.europa.ec.checkVatService
Dim result As Date

result = ws.checkVat("US", "20", True, "sample", "address")

The web service you mentioned has at least two methods: checkVatService
and checkVatServiceAsync. The latter is only looking for two input
parameters, but it doesn't return a value. The former returns a value
(a date), but expects five input parameters (which will show up in
Intellisense).

I don't know enough about this webservice to say what values in those
parameters are valid, but I can tell you that the values in my example
above are the right data type but cause an error, so obviously
something is wrong with them.

But if you know the right range of values to pass in, you should be
able to get a valid response (a date) back.

hth a little bit.

adm
 
A

adm

adm said:
I don't know enough about this webservice to say what values in those
parameters are valid, but I can tell you that the values in my example
above are the right data type but cause an error, so obviously
something is wrong with them.

Ok, I looked into VAT numbers a little bit so I could better understand
what kinds of values the web service is expecting. The values I passed
in above are not right: the web method is expecting (at least) two
strings, not a string and a number.

I changed my code to:

ws.checkVat("CZ", "991231123")

But I am getting an {INVALID_INPUT} error back.

When I run equivalent code in PHP, it seems to work fine, that is,
there is no error thrown, and I get an array back with the values I
passed to the service.

This leads me to believe that the SOAP service is not accepting
parameters from the .NET client in the way that we are used to seeing
with .NET-based web services. So maybe these parameters need to be
presented to the service differently. If someone has some expertise in
passing "complex" parameters to non-.NET web services, maybe they can
chime in with the (simple?) solution.
 
T

Tom Shelton

Hello,

I've have a problem with a webservice. I just want to validate a VAT
number by country code and VAT numer. The return value should be like
"it's valid" and/or the name where it's registered to.

To do this i can access the webservice on the following location:
http://ec.europa.eu/taxation_customs/vies/api/checkVatPort

A WSDL file is also available:
http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl.

My question is how can i get the results i want. Can someone help me
with just the little module that does the request.

I already right-click on Web reference and added
http://ec.europa.eu/taxation_customs/vies/api/checkVatPort?wsdl, but
when i want to use checkvat(country,VAT), it exepect 3 other fields and
the return type seem to be date.

My understanding is that i only have to use 2 parameters (via XML ?),
and retrieve a string value (XML ?)

I just need something like
returnvalue = doRequest(country,VAT).valid
Name = returnvalue.Name
Valid = returnvalue.valid
etc.....


Thanks for all your help.

Regards,

Edje

Option Strict On
Option Explicit On

Imports System
Imports ConsoleApplication9.eu.europa.ec

Module Module1

Sub Main()
Dim check As New checkVatService()
Dim countryCode As String = "CZ"
Dim vatNumber As String = "991 2311 23"
Dim valid As Boolean
Dim currentDate As Date
Dim name As String = String.Empty
Dim address As String = String.Empty

currentDate = check.checkVat(countryCode, vatNumber, valid,
name, address)

If valid Then
Console.WriteLine(name)
Console.WriteLine(address)
Console.WriteLine(currentDate)
Else
Console.WriteLine("invalid vat")
End If
End Sub

End Module

What I don't now a valid VAT, so I can't really test it. I just get
back valid = false. I imported this into C#, and it shows the
arguments as:

DateTime checkVat (ref string countryCode, ref string vatNumber, out
bool valid, out string name, out string address)

In C#, that means that the method will fill in the out parameters, and
you must supply the ref parameters. In c# that means you must
initailize first, and it must be saved as a variable. VB.NET will let
you get away with it by creating a temp value for you. But, as you can
see I declare all these values in the above code.... So, based on the
C# code I'm assuming that the VB.NET code actually works?
 
T

Tom Shelton

Tom said:
Option Strict On
Option Explicit On

Imports System
Imports ConsoleApplication9.eu.europa.ec

Module Module1

Sub Main()
Dim check As New checkVatService()
Dim countryCode As String = "CZ"
Dim vatNumber As String = "991 2311 23"
Dim valid As Boolean
Dim currentDate As Date
Dim name As String = String.Empty
Dim address As String = String.Empty

currentDate = check.checkVat(countryCode, vatNumber, valid,
name, address)

If valid Then
Console.WriteLine(name)
Console.WriteLine(address)
Console.WriteLine(currentDate)
Else
Console.WriteLine("invalid vat")
End If
End Sub

End Module

What I don't now a valid VAT, so I can't really test it. I just get
back valid = false. I imported this into C#, and it shows the
arguments as:

DateTime checkVat (ref string countryCode, ref string vatNumber, out
bool valid, out string name, out string address)

In C#, that means that the method will fill in the out parameters, and
you must supply the ref parameters. In c# that means you must
initailize first, and it must be saved as a variable. VB.NET will let
you get away with it by creating a temp value for you. But, as you can
see I declare all these values in the above code.... So, based on the
C# code I'm assuming that the VB.NET code actually works?

Boy - I meant to point out that I'm using the vat numbers supplied adm.
Didn't mean to take credit for that :) I was just trying to take his
example a little farther.
 
A

adm

Tom said:
Boy - I meant to point out that I'm using the vat numbers supplied adm.
Didn't mean to take credit for that :) I was just trying to take his
example a little farther.

your example is great, tom. i am going to try this on wednesday...my
full code was very similar to this, but only gave me input errors. i
wonder what the problem is. that insight into "in" and "out" is
helpful. PHP worked by passing two parameters in and getting 5 back,
but VB didn't want to do me that kindness.

also, it seems like a misspoke on that checkVatAsync above. Is it just
an artifact of the proxy class? I thought that might be the case after
I actually looked at the WSDL.

adm
 
E

Edje

Tom Shelton schreef:
Boy - I meant to point out that I'm using the vat numbers supplied adm.
Didn't mean to take credit for that :) I was just trying to take his
example a little farther.


Tom,

I tried this code (with proxy server), but i get the following error:
"The request failed with HTTP status 417: Expectation Failed."
The error is on the following row:
currentDate = check.checkVat(countryCode, vatNumber, valid,
name, address)

Here is my code:

Option Strict On
Option Explicit On
Imports BTWCheck.eu.europa.ec
Imports System.Net
Imports System


Module Module1

Sub Main()
Dim check As New checkVatService()
Dim countryCode As String = "BE"
Dim vatNumber As String = "4179951765"
Dim valid As Boolean
Dim currentDate As Date
Dim datestring As String
Dim name As String = String.Empty
Dim address As String = String.Empty
' proxy settings
Dim cr As New System.Net.NetworkCredential("user", "pass",
"domain")
Dim pr As New System.Net.WebProxy("10.0.0.9", 8080)
pr.Credentials = cr
check.Proxy = pr


currentDate = check.checkVat(countryCode, vatNumber, valid,
name, address)
If valid Then
Console.WriteLine(name)
Console.WriteLine(address)
Console.WriteLine(currentDate)
Else
Console.WriteLine("invalid vat")
End If
End Sub


End Module

Thanks for your help.


Ed
 
T

Tom Shelton

Edje said:
Tom Shelton schreef:



Tom,

I tried this code (with proxy server), but i get the following error:
"The request failed with HTTP status 417: Expectation Failed."
The error is on the following row:
currentDate = check.checkVat(countryCode, vatNumber, valid,
name, address)

Here is my code:

Option Strict On
Option Explicit On
Imports BTWCheck.eu.europa.ec
Imports System.Net
Imports System


Module Module1

Sub Main()
Dim check As New checkVatService()
Dim countryCode As String = "BE"
Dim vatNumber As String = "4179951765"
Dim valid As Boolean
Dim currentDate As Date
Dim datestring As String
Dim name As String = String.Empty
Dim address As String = String.Empty
' proxy settings
Dim cr As New System.Net.NetworkCredential("user", "pass",
"domain")
Dim pr As New System.Net.WebProxy("10.0.0.9", 8080)
pr.Credentials = cr
check.Proxy = pr


currentDate = check.checkVat(countryCode, vatNumber, valid,
name, address)
If valid Then
Console.WriteLine(name)
Console.WriteLine(address)
Console.WriteLine(currentDate)
Else
Console.WriteLine("invalid vat")
End If
End Sub


End Module

Thanks for your help.


Ed

Sorry Ed, I'm hitting the limits of my knowledge of web services. I
haven't ever tried to use a web service through a proxy. I'm assuming
that there is something wrong with your proxy settings? I
unfortuantely don't have a proxy server to try your code against, so I
have no way of helping here. Hopefully, someone will be able to help
you further with this issue.
 
E

Edje

Tom Shelton schreef:
Sorry Ed, I'm hitting the limits of my knowledge of web services. I
haven't ever tried to use a web service through a proxy. I'm assuming
that there is something wrong with your proxy settings? I
unfortuantely don't have a proxy server to try your code against, so I
have no way of helping here. Hopefully, someone will be able to help
you further with this issue.

Tom,

I don't think the proxy server si the issue, because i've tried it also
from home, with no proxy server and i receive the same error message.

Did it work for you ?

Thanks,

Ed
 
A

adm

Edje said:
Did it work for you ?

Hi all,

I can confirm that this works:

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim check As New eu.europa.ec.checkVatService
Dim countryCode As String = "CZ"
Dim vatNumber As String = "991231123"
Dim valid As Boolean
Dim currentDate As Date
Dim name As String = String.Empty
Dim address As String = String.Empty

currentDate = check.checkVat(countryCode, vatNumber, valid,
name, address)
Me.TextBox1.Text = currentDate.ToString


End Sub
End Class

It will put the date (as returned by the webservice) in the text box.
Thanks to Tom for the code.

adm
 
T

Tom Shelton

Edje said:
Tom Shelton schreef:


Tom,

I don't think the proxy server si the issue, because i've tried it also
from home, with no proxy server and i receive the same error message.

Did it work for you ?

Thanks,

Ed

Well - it worked in that I don't receive an error with the code I
originally posted. All I get back is valid = false. I checked the VAT
on the eropa site and it also says it is invalid. So, to be honest
unless I have a known valid VAT, I have know way of really knowing if
it worked or not... I was hoping you could take my code, and insert a
known good VAT (one that validates on the website) and see what you get
back.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top