![]() |
|
Post Request with XML request body - Printable Version +- LogicMachine Forum (https://forum.logicmachine.net) +-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1) +--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8) +--- Thread: Post Request with XML request body (/showthread.php?tid=5493) |
Post Request with XML request body - Hadeel - 03.07.2024 I am trying to send the following command to SONY Bravia TV with REST API request. While I successfully sent the exact same command with XML request body with Postman, when I try with LM I am getting 500 Internal Server Error. Am I missing something in my code? Code: local http = require("socket.http")
local ltn12 = require("ltn12")
path = 'http://172.16.1.11/sony/ircc'
payload = [[<?xml version="1.0"?>
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_SendIRCC
xmlns:u="urn:schemas-sony-com:service:IRCC:1">
<IRCCCode>AAAAAgAAAJcAAAArAw==</IRCCCode>
</u:X_SendIRCC>
</s:Body>
</s:Envelope>]]
local response_body = { }
local res, code, response_headers, status = http.request
{
url = path,
method = "POST",
headers =
{
["Accept"] = "*/*",
["Host"] = "172.16.1.1",
["Content-Type"] = "application/xml",
["SOAPACTION"] = "urn:schemas-sony-com:service:IRCC:1#X_SendIRCC",
["X-Auth-PSK"] = "1707",
["Connection"] = "Keep-Alive",
["Content-Length"] = payload:len()
},
source = ltn12.source.string(payload),
sink = ltn12.sink.table(response_body)
}
log("Response:", table.concat(response_body))
log("Status:", status)
log("Code:", code)
log("Response Headers:", response_headers)
log("Result:", res)The example code from SONY Bravia official is the follwoing. https://pro-bravia.sony.net/ja/develop/integrate/ircc-ip/overview/index.html#authentication Thank you for your help in advance! RE: Post Request with XML request body - admin - 04.07.2024 Host header is not needed (it also does not match the IP of your TV). Content-Type is different from the docs, should be text/xml; charset=UTF-8 Also try removing ["Connection"] = "Keep-Alive", as it's not supported by the library. If it still does not work the try exporting Postman request that works in Curl format and post it here. RE: Post Request with XML request body - Hadeel - 04.07.2024 Thank you admin! I removed Host, Connection headers and changed Content-Type but it is not working... This is the Curl request that works successfully. Code: curl --location 'http://172.16.1.11/sony/ircc' \
--header 'X-Auth-PSK: 1707' \
--header 'SOAPACTION: "urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"' \
--header 'Content-Type: application/xml' \
--data '<?xml version="1.0"?>
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"
s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:X_SendIRCC
xmlns:u="urn:schemas-sony-com:service:IRCC:1">
<IRCCCode>AAAAAgAAAKQAAABbAw==</IRCCCode>
</u:X_SendIRCC>
</s:Body>
</s:Envelope>'RE: Post Request with XML request body - admin - 04.07.2024 Looks like SOAPACTION header value must be also contain double quotes: Code: ["SOAPACTION"] = [["urn:schemas-sony-com:service:IRCC:1#X_SendIRCC"]],Not sure if it matters but your script has a different IRCCCode value compared to the Postman/Curl. RE: Post Request with XML request body - Hadeel - 04.07.2024 Ohhh exactly, it worked ..... !! Thank you so much for your quick help!! Oh yes I am trying with several IRCCCode but they all work now....appreciate you a lot as always! |