Example: curl -XPOST "https://api.vat-search.eu/v2/bulk_search/?cutoff_score=1" -d '[ {"n": "Linkomat GmbH","a": "1150","cc": "at"}, {"n": "Google","a": ""} ]' 2. Authentication We support Basic Authentication with the assigned user name and password setup
I manage to logon to their web interface via chrome easily, but the API just won´t work for me. I tried having username & password both before and after the poststring.
HttpJob correctly creates the basic authentication header (by request). It looks like the username and password you are providing is not correct. I verified HttpJobs basic authentication against postman-echo.com:
B4X:
'Non-UI application (console / server application)
#Region Project Attributes
#CommandLineArgs:
#MergeLibraries: True
#End Region
Sub Process_Globals
End Sub
Sub AppStart (Args() As String)
testpost
StartMessageLoop
End Sub
Sub testpost
Dim job As HttpJob
job.Initialize("", Me)
'job.Username = "johndoe@somewhere.net"
'job.Password = "guessme!"
job.Username = "postman"
job.Password = "password"
job.Download("https://postman-echo.com/basic-auth")
'job.Download("https://api.vat-search.eu/v2/?n=Linkomat&cc=at")
Wait For (job) JobDone(job As HttpJob)
If job.Success Then
Log("Success!!!")
Log(job.GetString)
Else
Log("OOOPS")
Log(job.ErrorMessage)
End If
job.Release
StopMessageLoop
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
HttpJob correctly creates the basic authentication header (by request). It looks like the username and password you are providing is not correct. I verified HttpJobs basic authentication against postman-echo.com:
B4X:
'Non-UI application (console / server application)
#Region Project Attributes
#CommandLineArgs:
#MergeLibraries: True
#End Region
Sub Process_Globals
End Sub
Sub AppStart (Args() As String)
testpost
StartMessageLoop
End Sub
Sub testpost
Dim job As HttpJob
job.Initialize("", Me)
'job.Username = "johndoe@somewhere.net"
'job.Password = "guessme!"
job.Username = "postman"
job.Password = "password"
job.Download("https://postman-echo.com/basic-auth")
'job.Download("https://api.vat-search.eu/v2/?n=Linkomat&cc=at")
Wait For (job) JobDone(job As HttpJob)
If job.Success Then
Log("Success!!!")
Log(job.GetString)
Else
Log("OOOPS")
Log(job.ErrorMessage)
End If
job.Release
StopMessageLoop
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
Thanks so much! I assume that there´s no difference between whether this is NON_UI or UI, which is what I have? Silly question, only trying to find any possible reason other than the credentials not being correct before I go back to the support of the service again.
The sad thing is, you should not have to do this. I used PTS-V2 (https://ptsv2.com) to test authentication and it just works. Even the UI version. The header looks just like it should.
B4X:
#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
'MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
MainForm.Show
testpost
End Sub
Sub testpost
Dim job As HttpJob
job.Initialize("", Me)
job.Username = "johndoe@somewhere.net"
job.Password = "guessme!"
'job.Username = "postman"
'job.Password = "password"
'job.Username = "test"
'job.Password = "test"
job.PostString("https://ptsv2.com/t/createyourowntoilet/post","test")
'job.Download("https://postman-echo.com/basic-auth")
'job.Download("https://api.vat-search.eu/v2/?n=Linkomat&cc=at")
Wait For (job) JobDone(job As HttpJob)
If job.Success Then
Log("Success!!!")
Log(job.GetString)
Else
Log("OOOPS")
Log(job.ErrorMessage)
End If
job.Release
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
The sad thing is, you should not have to do this. I used PTS-V2 (https://ptsv2.com) to test authentication and it just works. Even the UI version. The header looks just like it should.
B4X:
#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
'MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
MainForm.Show
testpost
End Sub
Sub testpost
Dim job As HttpJob
job.Initialize("", Me)
job.Username = "johndoe@somewhere.net"
job.Password = "guessme!"
'job.Username = "postman"
'job.Password = "password"
'job.Username = "test"
'job.Password = "test"
job.PostString("https://ptsv2.com/t/createyourowntoilet/post","test")
'job.Download("https://postman-echo.com/basic-auth")
'job.Download("https://api.vat-search.eu/v2/?n=Linkomat&cc=at")
Wait For (job) JobDone(job As HttpJob)
If job.Success Then
Log("Success!!!")
Log(job.GetString)
Else
Log("OOOPS")
Log(job.ErrorMessage)
End If
job.Release
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
Agree, it´s very strange why that other site won´t do what it should logging on in a proper manner with basic authentication but what matters is that it now works for me.