First, I created a new Livelink module and orphaned a request handler. In this particular case, I orphaned WebDsp:WebDsp Root:RequestHandler because I did not want or need a Livelink login. I then tested submitting the HTTP POST using a form like this one:
<form method="POST"
action="/Livelink/livelink.exe?func=myhandler">
To my surprise, the request was not sent to my handler. I was instead sent to the Livelink login form with a
nextURL
pointing at func=llworkspace
, i.e., the default request handler.It turns out that Livelink ignores query parameters in the URL on a POST request. When my request got to the Dispatch function, there was no visible "func" parameter, so the default request handler was called.
The solution is to add a PathInfoHandler, and embed the request for myhandler in the path info:
<form method="POST"
action="/Livelink/livelink.exe/mypathhandler">
I orphaned WebDsp:WebDsp Root:PathInfoHandler and overrode the 0 Setup script to contain:
.fReplacementArgs = {{ 'func', 'myhandler' }}
.fPathInfoName = 'mypathhandler'
So now Livelink sees the
/mypathhandler
in the URL path info, and infers a func=myhandler
query parameter from that. (The use of two different names is completely optional, and I think undesirable. I have used them only to make the distinction clear.)