Set request=##class(%Net.HttpRequest).%New() Set request.Server="something.com" Set request.Port="some_port" Set request.Username="some_username" Set request.Password="some_password"
Set status=request.Get("some_url") Do request.HttpResponse.Data.Rewind() Set jsonString=request.HttpResponse.Data.Read(request.HttpResponse.Data.Size,.sc)
Set jsonObject={}.%FromJSON(jsonString) Write jsonObject."some_property" ...
set req = ##class(%Net.HttpRequest).%New()
set req.SSLConfiguration="MBTA"// Set this up in the management portal under Security Management > SSL/TSL Configurations; this is the SSLConfig's "Name"// For HTTP Basic authentication, simple route is e.g.:set req.Username = "foo"set req.Password = "bar"// For other modes, e.g.:do req.SetHeader("Authorization","Bearer abcd")
set sc = req.Get("https://api-v3.mbta.com/routes")
// TODO: check sc / $$$ThrowOnError(sc)// TODO: check req.HttpResponse.StatusCode to make sure it's 200 and error handle appropriatelyset obj = {}.%FromJSON(req.HttpResponse.Data)
zw obj // There's your object!
mybe you mean this d ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(SampleJsonData,,.list) ,I tried that but I got an empty list?
in all cases, after doing the below, I should be able at lease read the JSON string but I'm getting an html file, so I'm missing something in my code?
set Httprequest = ##class(%Net.HttpRequest).%New() Set Httprequest.SSLConfiguration="RTLS" Set Httprequest.Server="serverurl" Set Httprequest.Https=1 Set Httprequest.Timeout=30 set Httprequest.ContentType="application/json" Do Httprequest.SetHeader("Accept","text/plain") set Httprequest.Username="user" set Httprequest.Password="password" S stat= Httprequest.Get("someurl")
Status= 1 justteslls you tht the HTTP connection was processed OK. Next you need to take a look into your response object.
set res=Httprequest.HttpResponse in terminal then ZW res to see in the Status is 200 OK otherwise what you see I res.Data might be just an error page. Which is also OK for HTTP but not for your content.
The HTTP status code. This is useful to determine if the request was successful. Look in the rfc for HTTP to see which codes are supported and what they mean. A human readable form of this code is stored as the ReasonPhrase
set Httprequest = ##class(%Net.HttpRequest).%New() Set Httprequest.SSLConfiguration="RTLS" Set Httprequest.Server="serverurl" Set Httprequest.Https=1 Set Httprequest.Timeout=30 set Httprequest.ContentType="application/json" Do Httprequest.SetHeader("Accept","text/plain")
set Httprequest.Username="user" set Httprequest.Password="password" S stat= Httprequest.Get("someurl")
W stat 1
so given the status =1 that means everything went ok isn't if not how can I check?
then I did the following to read the JSON file : Set Resp=Httprequest.HttpResponse.Data.Read()
but when I cheked what's in Resp I get the below html output:
Hi.
Set request.Server="something.com"
Set request.Port="some_port"
Set request.Username="some_username"
Set request.Password="some_password"
Set jsonString=request.HttpResponse.Data.Read(request.HttpResponse.Data.Size,.sc)
Write jsonObject."some_property"
...
Something like that...
Regards,
Matjaž
Thanks
Hi
Set jsonObject={}.%FromJSON(jsonString) doesn't seems to work and couldn't find %FromJSON in Docs is this available in Ensemble 2014 which I'm using?
thanks
Sure, here's one:
set req = ##class(%Net.HttpRequest).%New() set req.SSLConfiguration="MBTA" // Set this up in the management portal under Security Management > SSL/TSL Configurations; this is the SSLConfig's "Name" // For HTTP Basic authentication, simple route is e.g.: set req.Username = "foo" set req.Password = "bar" // For other modes, e.g.: do req.SetHeader("Authorization","Bearer abcd") set sc = req.Get("https://api-v3.mbta.com/routes") // TODO: check sc / $$$ThrowOnError(sc) // TODO: check req.HttpResponse.StatusCode to make sure it's 200 and error handle appropriately set obj = {}.%FromJSON(req.HttpResponse.Data) zw obj // There's your object!
sorry also set obj = {}.%FromJSON(req.HttpResponse.Data) is not working, is this available in Ensemble 2014?
Thanks
I found %DynamicObjects first in Caché 2017.1 Class Ref
https://cedocs.intersystems.com/ens20171/csp/documatic/%25CSP.Documatic.cls?&LIBRARY=%25SYS&CLASSNAME=%25Library.DynamicObject
In 2014 this was somehow buried in %ZAN.Auxilary.???
mybe you mean this d ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(SampleJsonData,,.list) ,I tried that but I got an empty list?
in all cases, after doing the below, I should be able at lease read the JSON string but I'm getting an html file, so I'm missing something in my code?
set Httprequest = ##class(%Net.HttpRequest).%New()
Set Httprequest.SSLConfiguration="RTLS"
Set Httprequest.Server="serverurl"
Set Httprequest.Https=1
Set Httprequest.Timeout=30
set Httprequest.ContentType="application/json"
Do Httprequest.SetHeader("Accept","text/plain") set Httprequest.Username="user"
set Httprequest.Password="password"
S stat= Httprequest.Get("someurl")
Set Resp=Httprequest.HttpResponse.Data.Read()
Status= 1 justteslls you tht the HTTP connection was processed OK.
Next you need to take a look into your response object.
set res=Httprequest.HttpResponse
in terminal then ZW res to see in the Status is 200 OK
otherwise what you see I res.Data might be just an error page.
Which is also OK for HTTP but not for your content.
• property ReasonPhrase as %String;
• property StatusCode as %Integer;
• property StatusLine as %String;
So I did the following from the Terminal:
set Httprequest = ##class(%Net.HttpRequest).%New()
Set Httprequest.SSLConfiguration="RTLS"
Set Httprequest.Server="serverurl"
Set Httprequest.Https=1
Set Httprequest.Timeout=30
set Httprequest.ContentType="application/json"
Do Httprequest.SetHeader("Accept","text/plain")
set Httprequest.Username="user"
set Httprequest.Password="password"
S stat= Httprequest.Get("someurl")
W stat
1
so given the status =1 that means everything went ok isn't if not how can I check?
then I did the following to read the JSON file :
Set Resp=Httprequest.HttpResponse.Data.Read()
but when I cheked what's in Resp I get the below html output:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>IUDEX</title>
<base href="/" />
<link href="_content/MudBlazor/MudBlazor.min.css" rel="stylesheet" />
<link href="_content/Smart.Blazor/css/smart.default.css" rel="stylesheet" />
<link href="css/app.css" rel="stylesheet" />
<link href="Galaxy.Client.styles.css" rel="stylesheet" />
</head>
<body>
<style>
.loader-logo {
width: 256px;
}
.loader-container {
flex-direction: column;
flex-wrap: nowrap;
justify-content: center;
align-items: center;
display: flex;
gap: 32px;
height: 512px;
}
.spinner {
border: 5px solid #afafaf;
border-top: 5px solid #e53947;
border-radius: 50%;
width: 32px;
height: 32px;
animation: spin 700ms linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg)
}
100% {
transform: rotate(360deg)
}
}
</style>
<div class="loader-container" id="app">
<img class="loader-logo" src="images/logo-dark.svg" />
<div class="spinner"></div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">ð</a>
</div>
</div>
<script src="_content/MudBlazor/MudBlazor.min.js"></script>
<script src="_content/Smart.Blazor/js/smart.blazor.js"></script>
<script src="_content/Smart.Blazor/js/smart.elements.js"></script>
<script src="_content/Galaxy.DataViewer/canvasjs.min.js"></script>
<script src="_framework/blazor.webassembly.js"></script>
<script src="js/galaxyLib.min.js"></script>
</body>
</html>
I thought I'll be getting a JSON string, FYI I'm supposed to a get a Token in a JSON file?
Thanks
Hi.
You are getting pure html, not a JSON serialized string. You need the correct URL/port where the REST server is listening.
Regards,
Matjaž
Social networks
InterSystems resources
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue
Log in or sign up
Log in or create a new account to continue