GetJSON not returning value if JSON is just value response
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
GetJSON not returning value if JSON is just value response
I am making a API call to a 3rd party service that returns a JSON response with the content of just the value (as opposed to "key":"value" of normal JSON). Thingworx does not seem to like this and doesn't return a usable response except for the headers. GetText does not work as the response is automatically formatted as JSON. See attached image for format of response from Postman
ThingWorx 9.1.8-b845
- Labels:
-
Coding
-
Connectivity
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Have you tried to output/cast the value that is returned from GetJSON as string to see if that works?
The output you show on the right screenshot though, ... can that even be considered a json?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
I've tried doing JSON.stringify and JSON.parse, but it contains nothing in the body. As far as considered to be JSON, technically, it can be. It is just a string-quoted value without a key.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
What you can try is to set the output result to 'String' without doing any stringify or parse to see what the service receives back from the call.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Setting the output to String (or Text) returns the same header content as when it is JSON.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Interesting, successful call shouldn't be returning those headers, those look like your call vs. a response.
I'm not sure if the Thingworx coding structure properly uses the : any that you have in there.
Maybe leave that out and directly use
result = Contentloaderfunctions ....
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
The ":any" is not actually in the code; it is an extension to ThingWorx that adds it to the editor.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
Is that response at all a 'default' response when the call doesn't resolve into a value?
ie the api has some error handling that just returns the call payload if something is correct and it can't return the value?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
No, the default response, if you ask for something that doesn't exist, is "
Valid:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
TW RestAPI is not strong as Postman, the best solution is let 3rd party service send back a normal JSON format response.
Except that, hHave you tried tunning the header option of GetJSON parameter? (red line). For example, set "*/*" for Accept option of header.
Besides, there are other services you can verify(green line), such as LoadBinary, LoadJSON.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Notify Moderator
I would suspect that just "somevalue" is not a valid json response. E.g. when trying to parse just a string in JavaScript
Actually wikipedia states that RFC 4627 is the latest json spec since 2006. And also e.g. https://jsonformatter.curiousconcept.com/# when choosing this RFC says it is not valid
I did not research what RFC is used by TWXs json interpreter but I assume it will be the same like I have in my browser (1st screeshot) which says its not valid.
Because of that I would try to just user GetText
(return type String)
result = Resources["ContenLoa..."].GetText(..
If this would have your expected response, you could interprete it like you want. Hope this works as it may complain about the actual Content-Type send by the server.. Worth a try.
I am not clear what "GetText does not work as the response is automatically formatted as JSON" means exactly - if it throws an error or what does not work here.
