How to use HTTPClient or RESTClient to call an API with basic authentication

Background

Almost every API requires some sort of authentication. Basic authentication is the simplest way to handle authentication. Here we are going to do a simple example to show you how to use HTTPClient or RESTClient to call an API with basic authentication.

Access a simple API with basic authentication in IE

Let’s take a simple basic authentication API from the Internet as an example.

If we input https://jigsaw.w3.org/HTTP/Basic/ in IE and press Enter, then input Username: guest; Password: guest in the pop-up login window.


Click the Sign in button and you will get a response of the current IE accessing the API: "Your browser made it!"


Use the HTTPClient object to call an API with basic authentication

Here is the debug view:


Here is the sample PB code:

String                                    ls_Basic, ls_UserName, ls_Password, ls_Body 
Integer                                  li_Return 
CoderObject                         lco_Code 
HttpClient                             lhc_Client 
lco_Code = Create CoderObject 
lhc_Client = Create HttpClient 
ls_UserName = "guest" 
ls_Password = "guest" 
ls_Basic = lco_code.base64encode( Blob(ls_UserName + ":" + ls_Password , EncodingUTF8!)) 
lhc_Client.SetRequestHeader( "Authorization", "Basic " + ls_Basic) 
li_Return = lhc_Client.SendRequest("GET", "https://jigsaw.w3.org/HTTP/Basic/") 
If li_Return = 1 And lhc_Client.GetResponseStatusCode() = 200 Then 
                lhc_Client.GetResponseBody(ls_Body) 
                MessageBox ("Tips" ,ls_Body ) 
End If 
Destroy ( lco_Code ) 
Destroy ( lhc_Client )

Use the RESTClient object to call an API with basic authentication

Here is the debug view:


Here is the sample PB code:

String         ls_Basic, ls_UserName, ls_Password, ls_Body 
Integer        li_Return 
CoderObject    lco_Code 
RestClient     lhc_Client 
lco_Code = Create CoderObject 
lhc_Client = Create RestClient 
ls_UserName = "guest" 
ls_Password = "guest" 
ls_Basic = lco_code.base64encode( Blob(ls_UserName + ":" + ls_Password , EncodingUTF8!)) 
lhc_Client.SetRequestHeader( "Authorization", "Basic " + ls_Basic) 
li_Return = lhc_Client.sendgetrequest( "https://jigsaw.w3.org/HTTP/Basic/",ls_Body) 
If li_Return = 1 And lhc_Client.GetResponseStatusCode() = 200  Then 
                MessageBox ("Tips" ,ls_Body ) 
End If Destroy ( lco_Code ) 
Destroy ( lhc_Client )