HTTP Client

To connect to a server over HTTP, you need to create a client object and call the connect method.

The connect method accepts the following parameters:

  • endpointUrl - The URL of the server.

    Servers support two kinds of schemes for HTTP endpoints.

    • opc.http://host:port/path

    • opc.https://host:port/path

    Some servers may also support HTTP/HTTPS schemes:

    • http://host:port/path

    • https://host:port/path

  • transportProfile - The transport profile to use can be one of the following:

    • ua.TranportProfileUri.HttpsJson expands to string http://opcfoundation.org/UA-Profile/Transport/https-json

    • ua.TranportProfileUri.HttpsBinary expands to string http://opcfoundation.org/UA-Profile/Transport/https-uabinary

    This parameter is optional. If not provided, the client will try to connect using binary encoding.

HTTP Examples

Binary Encoding

The following example shows how to connect to a server using binary encoding over HTTP.

local err = client:connect("opc.http://localhost:"..mako.port.."/opcua/", ua.TranportProfileUri.HttpsBinary)
if err ~= nil then
  error("connection failed: "..err)
end

trace("Connected sucessfully")

Full source

You can also omit the second parameter; the client will try to connect using binary encoding.

local err = client:connect("opc.https://localhost:"..mako.sslport.."/opcua/")
if err ~= nil then
  error("connection failed: "..err)
end

trace("Connected sucessfully")

To connect to a server over HTTPS, you need to pass URL with opc.https:// scheme.

local err = client:connect("opc.https://localhost:"..mako.sslport.."/opcua/", ua.TranportProfileUri.HttpsBinary)
if err ~= nil then
  error("connection failed: "..err)
end

trace("Connected sucessfully")

Full source

JSON Encoding

JSON encoding is a non-standard way to communicate between OPCUA clients and servers. Because of this, you can only connect to RealTimeLogic server using JSON encoding.

The following example shows how to connect to a server using JSON encoding over HTTP.

local err = client:connect("opc.https://localhost:"..mako.sslport.."/opcua/", ua.TranportProfileUri.HttpsJson)
if err ~= nil then
  error("connection failed: "..err)
end

trace("Connected sucessfully")

Full source