This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

http request
#1
Hi:

I'm trying to extract data from Mitsubishi Web Server - SC-SL4

The data to request is:

mensaje = ='<Packet> \r\n' ..
  <Command>getRequest</Command> \r\n' ..
  <AirConditioner> \r\n' ..
    <OpGroup GrNo="1" OnOff="*" Mode="*" ErrorStatus="*"></OpGroup>\r\n' ..
     </AirConditioner> \r\n' ..
</Packet>\r\n' ..


The server response 'error 400: syntax error

This is my code:

Content = string.len(mensaje)
soap = '<?xml version="1.0" encoding="UTF-8"?>'


-- http request 
reqs = 'POST /servlet/MIMEReceiveServlet.asp HTTP/1.1\r\n'..
'Content-Type: text/xml\r\n'..
'Content-Length: '..Content..'\r\n' ..
'\r\n' ..
soap..'\r\n' ..mensaje

sock = socket.tcp()
sockConfusedettimeout(70)

res, err = sock:connect(ip, port)
log(res,err)

if res then
res, err = sockConfusedend(reqs)

  if res then
    log('send OK ')
  else
    log('send failed: ' .. tostring(err))
  end
else
  log('connect failed: ' .. tostring(err))
end
 
res2, err2 = sock:receive("*a")
sock:close()

log(res2,err2)


The result is nil. We have another installation with another server and LMReactor and it works perfectly.

In this isntallation we have is with LMAmbient
Reply
#2
Try this, your content-length header does not include initial XML line.
Edit: you are missing Host and Connection headers.
Code:
data =
'<?xml version="1.0" encoding="UTF-8"?>\r\n' ..
'<Packet>\r\n' ..
'<Command>getRequest</Command>\r\n' ..
'<AirConditioner>\r\n' ..
'<OpGroup GrNo="1" OnOff="*" Mode="*" ErrorStatus="*"></OpGroup>\r\n' ..
'</AirConditioner>\r\n' ..
'</Packet>'

-- http request  
reqs = 'POST /servlet/MIMEReceiveServlet.asp HTTP/1.1\r\n'..
'Content-Type: text/xml\r\n'..
'Host: ' .. ip .. '\r\n' ..
'Connection: close\r\n' ..
'Content-Length: '.. #data..'\r\n\r\n' ..
data

sock = socket.tcp()
sock:settimeout(70)

res, err = sock:connect(ip, port)
log(res,err)

if res then
  res, err = sock:send(reqs)

  if res then
    log('send OK')
    
    res2, err2 = sock:receive("*a")
    sock:close()

    log(res2,err2)
  else
    log('send failed: ' .. tostring(err))
  end
else
  log('connect failed: ' .. tostring(err))
end
Reply
#3
sorry I know that it's necessary include the HOST with HTTP/1.1, I tried everything and I have transcribed it badly.
The xml line is in soap variable.
Reply


Forum Jump: