Trying
The first step is obtaining the ticket. In Postman I can manage using the following:
Then set the cookie in the get request
And I'm able to get the required info.
How to do this in Node-RED?
John
Trying
The first step is obtaining the ticket. In Postman I can manage using the following:
Then set the cookie in the get request
And I'm able to get the required info.
How to do this in Node-RED?
John
Export your 2 queries as CURL and I will show you the "node-red" way using requests.
Feel free to sanitise any data (like username/password)
It seems that I can simplify this by creating an API token. The curl command will then be:
curl -H "Authorization: PBSAPIToken=root@pam!monitoring:xxx" https://192.168.1.150:8007/api2/json/version
Coverting to JSON I will get:
{
"url": "https://192.168.1.150:8007/api2/json/version",
"raw_url": "https://192.168.1.150:8007/api2/json/version/",
"method": "get",
"headers": {
"Authorization": "PBSAPIToken=root@pam!monitoring:xxx"
}
}
And above is working in Postman.
Like to see how to achieve this in Node-RED.
John
Try this...
Demo flow (use CTRL+I
to import)...
[{"id":"c82b311ec0638ce1","type":"http request","z":"4c5ad8c7caa80822","name":"","method":"use","ret":"txt","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","authType":"","senderr":false,"headers":[],"credentials":{"user":"","password":""},"x":440,"y":1160,"wires":[["92e61560bb618ec1"]]},{"id":"fe26ba8d9d76aca4","type":"function","z":"4c5ad8c7caa80822","name":"","func":"//original curl: \n//\n//curl -H \"Authorization: PBSAPIToken=root@pam!monitoring:xxx\" https://192.168.1.150:8007/api2/json/version\n\nmsg.method = \"get\";\nmsg.url = \"https://192.168.1.150:8007/api2/json/version\";\nmsg.payload = ``;\nmsg.headers = {\n \"Authorization\": \"PBSAPIToken=root@pam!monitoring:xxx\"\n};\nmsg.cookies = null;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":1160,"wires":[["c82b311ec0638ce1"]]},{"id":"92e61560bb618ec1","type":"debug","z":"4c5ad8c7caa80822","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":620,"y":1160,"wires":[]},{"id":"2fde920d638097d0","type":"inject","z":"4c5ad8c7caa80822","name":"Click me","props":[],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":80,"y":1160,"wires":[["fe26ba8d9d76aca4"]]}]
I will get:
"RequestError: self signed certificate : https://192.168.1.150:8007/api2/json/version"
John
The error is quite self-explanatory... You are attempting an HTTPS request to an IP address and there is no valid certificate. So it fails.
If you look in the manual of the HTTP node:
rejectUnauthorized
If set to false, allows requests to be made to https sites that use self signed certificates.
In the function where msg.url and so on are set, adding a line:
msg.rejectUnauthorized = false;
should do the trick.
Thnx, I had a look before at this but the post I found had a slightly different solution that did not do the job.
Thanks a lot for your help. It turned out that I should not use the HTTP nodes but just write a function.
John
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.