I am trying to retrieve literature data from the ‘Web of Science’ SOAP access. The authorization is working fine using the Generic Web Service Client node. The Return value of this node is (presumably) the session ID.
Using a second Generic Web Service Client node I try to query WOS and retrieve data. The SOAP access is working fine, as the input parameter are asked in the node configuration panel. The needed input parameter are understood and discussed with a colleague from Web of Science.
The error message is
Session identifier cookie value cannot be null or an empty string - It is required that the high level Web service client program participate in the session initialized by the server.
I have the impression that the session ID -“produced in the first node”- is not available in the second node. This ID is not an input parameter asked in the configuration panel of the node.
Does anybody has experiences with data retrieval from WOS?
Any help is really appreciated.
Thank you very much in advance
I just tried it further…
Web of Science expects a Session Identifier (SID) as a cookie in the transport header.
The html should look like this:
The Generic Web Service Node offers the possibility to add a SOAP header. Is this the right “location” to get the SID cookie “into” the query?
This option expects xml… my simple approach was
SID = "D33BANCgHu5dz3Tdv"
This was not successful.
The error message was
2018-10-03 16:33:18,810 : DEBUG : KNIME-Worker-40 : WSExecutor : Generic Web Service Client : 0:109 : Failed on row "Row0": (SEE0001) Session identifier cookie value cannot be null or an empty string - It is required that the high level Web service client program participate in the session initialized by the server.
org.apache.cxf.binding.soap.SoapFault: (SEE0001) Session identifier cookie value cannot be null or an empty string - It is required that the high level Web service client program participate in the session initialized by the server.
So, I assume, the SID was not “injected” correctly.
Does anybody has a hint for me?
Thank you in advance
I think the soap header is a custom field in the soap payload (part of the xml that is sent back and forth). The Session Identifier is part of the http header, which you can’t currently set.
I think you we are out of luck here. Maybe they offer a REST endpoint – that’s much more standard nowadays and you can do all sorts of things using the KNIME REST client nodes.
Thank you very much… As I am in a hurry to get this access realized, I have moved to R. The package wosr suits my needs. In Python there is even “better” library using a more comprehensive set of commands of the SOAP API.
It’s a pity that the KNIME node is not able to work with this “request”, as I would have preferred KNIME…