I hope someone can help me with this. I have done this exact thing before with another site and it's working fine, but for some reason I'm trying to develop something with ServiceNOW and I can't get the authorization working. I've tried various ways of doing it but every time I try and post something the message comes back that I'm not authorized. Here is the code that I'm using:
Code: Select all
Define.s UserName, Password, EncodedLogin, TicketString, FullResponse, ResponseCode, URLString
Define *Login, Running
If Not InitNetwork()
Debug "Problem initializing the network! Program Ending"
End 101
EndIf
NewMap Header.s()
Username = "admin"
Password = "<mypassword>"
*Login = UTF8(UserName + ":" + Password)
EncodedLogin = Base64Encoder(*Login, MemorySize(*Login))
Header("Authorization") = "Basic " + EncodedLogin
Header("Accept") = "application/xml"
Header("Content-Type") = "application/xml"
ForEach Header()
Debug MapKey(Header()) + ": " + Header()
Next
Debug ""
Debug "---------------------------------------------------------------"
Debug ""
URLString = "https://mydevelopmentinstance.service-now.com/api/now/table/sys_user"
Running = HTTPRequest(#PB_HTTP_Get, URLString, "", 0, Header())
If Running
FullResponse = HTTPInfo(Running, #PB_HTTP_Response)
ResponseCode = HTTPInfo(Running, #PB_HTTP_StatusCode)
LogSomething(#TAB$ + "Got " + FullResponse)
FinishHTTP(Running)
Debug "Running: " + Running
Debug "Response Code: " + ResponseCode
Debug "Response: " + FullResponse
EndIf
I thought maybe PureBasic already put in the BASIC for me on the authorization so I took that out, did many other things and nothing seems to allow me to authenticate. I was able to get this to work in PowerShell and it works:<detail>Required to provide Auth information</detail><message>User Not Authenticated</message>
Code: Select all
# Eg. User name="admin", Password="admin" for this code sample.
$user = "admin"
$pass = "mypassword"
# Build auth header
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user, $pass)))
# Set proper headers
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add('Authorization',('Basic {0}' -f $base64AuthInfo))
$headers.Add('Accept','application/json')
# Specify endpoint uri
$uri = "https://mydevelopmentinstance.service-now.com/api/now/table/sys_user?sysparm_limit=10"
# Specify HTTP method
$method = "get"
# Send HTTP request
$response = Invoke-RestMethod -Headers $headers -Method $method -Uri $uri
# Print response
$response
Thanks so much,
stevinga