Hello,
I need to call SOAP Web Service based on its URL and WSDL. The Web Service is password protected, and returns back XML. WSDL shows all operations, aka methods.
Is it possible to make calls to SOAP Web Service from the BaseX 10.0?
Regards, Yitzhak Khabinsky
Hi Yitzhak,
Is it possible to make calls to SOAP Web Service from the BaseX 10.0?
That’s no problem; you can use the HTTP Client Module for that [1].
Best, Christian
Mr. Grün,
The documentation is covering just the REST calls. I need to make SOAP call. It seems that it is not coverd in the HTTP_Client_Module documentation.
It is not clear how to specify an operation/method on a SOAP service.
Here is a sample of the request exposed via SoapUI. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts%22%3E soapenv:Header/ soapenv:Body miam:getArrestReportsForExport miam:agencyId000</miam:agencyId> miam:passphrasepassword</miam:passphrase> miam:fromDate2022-08-02T06:35:01</miam:fromDate> </miam:getArrestReportsForExport> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
-----Original Message----- From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 7:41 AM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
Hi Yitzhak,
Is it possible to make calls to SOAP Web Service from the BaseX 10.0?
That’s no problem; you can use the HTTP Client Module for that [1].
Best, Christian
SOAP calls are nothing else than simple HTTP requests using the POST method and XML payloads. You can have a look at the following example [1]. You'll need to adjust the target URI and the body (the user/password attributes can possibly be dropped if the SOAP server does not require basic or digest authentication).
Hope this helps Christian
[1] https://docs.basex.org/wiki/HTTP_Client_Module#POST_Request
ykhabins@bellsouth.net schrieb am Fr., 12. Aug. 2022, 17:48:
Mr. Grün,
The documentation is covering just the REST calls. I need to make SOAP call. It seems that it is not coverd in the HTTP_Client_Module documentation.
It is not clear how to specify an operation/method on a SOAP service.
Here is a sample of the request exposed via SoapUI. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts%22%3E soapenv:Header/ soapenv:Body miam:getArrestReportsForExport miam:agencyId000</miam:agencyId> miam:passphrasepassword</miam:passphrase> miam:fromDate2022-08-02T06:35:01</miam:fromDate> </miam:getArrestReportsForExport> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
-----Original Message----- From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 7:41 AM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
Hi Yitzhak,
Is it possible to make calls to SOAP Web Service from the BaseX 10.0?
That’s no problem; you can use the HTTP Client Module for that [1].
Best, Christian
Mr. Grün,
I followed your suggestion.
Here is my unsuccessful attempt.
The request is failing on SOAPAction that should be a SOAP operation.
Our Web Service has multiple operations.
let $uri := 'https://%E2%80%A6/%E2%80%9D
return http:send-request(
<http:request method="POST" href="{$uri}" timeout='120'>
<http:header name="SOAPAction" value="getArrestReportsForExport"/>
<http:body media-type='application/xml'>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts%22%3E
miam:getArrestReportsForExport
miam:agencyId000</miam:agencyId>
miam:passphrase password </miam:passphrase>
miam:fromDate2022-08-12T06:35:01</miam:fromDate>
</miam:getArrestReportsForExport>
</soapenv:Body>
</soapenv:Envelope>
</http:body>
</http:request>
)
Getting back the following error:
<faultstring>no SOAPAction header!</faultstring>
Here is full response:
<http:response xmlns:http="http://expath.org/ns/http-client" status="500" message="Internal Server Error"> <http:header name="connection" value="close"/> <http:header name="content-language" value="en-US"/> <http:header name="content-security-policy" value="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'; media-src *; img-src * data:"/> <http:header name="content-type" value="text/xml; charset=utf-8"/> <http:header name="date" value="Fri, 12 Aug 2022 18:57:02 GMT"/> <http:header name="set-cookie" value="NSC_bgpsnqse.njbnjebef.hpw_TTM=ffffffff09da352b45525d5f4f58455e445a4a42378b;expires=Fri, 12-Aug-2022 19:13:41 GMT;path=/;secure;httponly"/> <http:header name="strict-transport-security" value="max-age=31536000; includeSubDomains"/> <http:header name="transfer-encoding" value="chunked"/> <http:header name="x-content-type-options" value="nosniff"/> <http:header name="x-forwarded-for" value="10.5.34.112"/> <http:header name="x-frame-options" value="SAMEORIGIN"/> <http:header name="x-powered-by" value="Servlet/3.0"/> <http:header name="x-xss-protection" value="1; mode=block"/> <http:body media-type="text/xml"/> </http:response> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance%22%3E soapenv:Body soapenv:Fault <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode> <faultstring>no SOAPAction header!</faultstring> <detail> <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/%22%3Es0144517</ns2:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 11:56 AM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
SOAP calls are nothing else than simple HTTP requests using the POST method and XML payloads. You can have a look at the following example [1]. You'll need to adjust the target URI and the body (the user/password attributes can possibly be dropped if the SOAP server does not require basic or digest authentication).
Hope this helps
Christian
[1] https://docs.basex.org/wiki/HTTP_Client_Module#POST_Request
<ykhabins@bellsouth.net mailto:ykhabins@bellsouth.net > schrieb am Fr., 12. Aug. 2022, 17:48:
Mr. Grün,
The documentation is covering just the REST calls. I need to make SOAP call. It seems that it is not coverd in the HTTP_Client_Module documentation.
It is not clear how to specify an operation/method on a SOAP service.
Here is a sample of the request exposed via SoapUI. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts%22%3E soapenv:Header/ soapenv:Body miam:getArrestReportsForExport miam:agencyId000</miam:agencyId> miam:passphrasepassword</miam:passphrase> miam:fromDate2022-08-02T06:35:01</miam:fromDate> </miam:getArrestReportsForExport> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
-----Original Message----- From: Christian Grün <christian.gruen@gmail.com mailto:christian.gruen@gmail.com > Sent: Friday, August 12, 2022 7:41 AM To: Yitzhak Khabinsky <ykhabins@bellsouth.net mailto:ykhabins@bellsouth.net > Cc: BaseX <basex-talk@mailman.uni-konstanz.de mailto:basex-talk@mailman.uni-konstanz.de > Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
Hi Yitzhak,
Is it possible to make calls to SOAP Web Service from the BaseX 10.0?
That’s no problem; you can use the HTTP Client Module for that [1].
Best, Christian
I think you have encountered a bug of the initial BaseX 10 release: We have upgraded to the new JDK HTTP Client API, and in some cases, headers were not correctly passed on to the server. The bug has recently been fixed in the latest snapshot. Could you give it a try? [1]
BaseX 10.1 will be released later this month. We apologize for the inconvenience, Christian
[1] https://files.basex.org/releases/
On Fri, Aug 12, 2022 at 9:24 PM ykhabins@bellsouth.net wrote:
Mr. Grün,
I followed your suggestion.
Here is my unsuccessful attempt.
The request is failing on SOAPAction that should be a SOAP operation.
Our Web Service has multiple operations.
let $uri := 'https://%E2%80%A6/%E2%80%9D
return http:send-request(
<http:request method="POST" href="{$uri}" timeout='120'>
<http:header name="SOAPAction" value="getArrestReportsForExport"/> <http:body media-type='application/xml'> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts"> <soapenv:Header/> <soapenv:Body> <miam:getArrestReportsForExport> <miam:agencyId>000</miam:agencyId> <miam:passphrase> password </miam:passphrase> <miam:fromDate>2022-08-12T06:35:01</miam:fromDate> </miam:getArrestReportsForExport> </soapenv:Body> </soapenv:Envelope> </http:body>
</http:request>
)
Getting back the following error:
<faultstring>no SOAPAction header!</faultstring>
Here is full response:
<http:response xmlns:http="http://expath.org/ns/http-client" status="500" message="Internal Server Error"> <http:header name="connection" value="close"/> <http:header name="content-language" value="en-US"/> <http:header name="content-security-policy" value="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'; media-src *; img-src * data:"/> <http:header name="content-type" value="text/xml; charset=utf-8"/> <http:header name="date" value="Fri, 12 Aug 2022 18:57:02 GMT"/> <http:header name="set-cookie" value="NSC_bgpsnqse.njbnjebef.hpw_TTM=ffffffff09da352b45525d5f4f58455e445a4a42378b;expires=Fri, 12-Aug-2022 19:13:41 GMT;path=/;secure;httponly"/> <http:header name="strict-transport-security" value="max-age=31536000; includeSubDomains"/> <http:header name="transfer-encoding" value="chunked"/> <http:header name="x-content-type-options" value="nosniff"/> <http:header name="x-forwarded-for" value="10.5.34.112"/> <http:header name="x-frame-options" value="SAMEORIGIN"/> <http:header name="x-powered-by" value="Servlet/3.0"/> <http:header name="x-xss-protection" value="1; mode=block"/> <http:body media-type="text/xml"/> </http:response> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance%22%3E soapenv:Body soapenv:Fault <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode> <faultstring>no SOAPAction header!</faultstring>
<detail> <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">s0144517</ns2:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 11:56 AM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
SOAP calls are nothing else than simple HTTP requests using the POST method and XML payloads. You can have a look at the following example [1]. You'll need to adjust the target URI and the body (the user/password attributes can possibly be dropped if the SOAP server does not require basic or digest authentication).
Hope this helps
Christian
[1] https://docs.basex.org/wiki/HTTP_Client_Module#POST_Request
ykhabins@bellsouth.net schrieb am Fr., 12. Aug. 2022, 17:48:
Mr. Grün,
The documentation is covering just the REST calls. I need to make SOAP call. It seems that it is not coverd in the HTTP_Client_Module documentation.
It is not clear how to specify an operation/method on a SOAP service.
Here is a sample of the request exposed via SoapUI. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts%22%3E soapenv:Header/ soapenv:Body miam:getArrestReportsForExport miam:agencyId000</miam:agencyId> miam:passphrasepassword</miam:passphrase> miam:fromDate2022-08-02T06:35:01</miam:fromDate> </miam:getArrestReportsForExport> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
-----Original Message----- From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 7:41 AM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
Hi Yitzhak,
Is it possible to make calls to SOAP Web Service from the BaseX 10.0?
That’s no problem; you can use the HTTP Client Module for that [1].
Best, Christian
Mr. Grün,
That was it. The latest snapshot: BaseX101-20220812.202804 resolved the issue.
Much appreciated for taking care with such speed!
P.S. Please update the HTTP_Client_Module documentation with the explicit SOAP call.
Regards, Yitzhak Khabinsky
-----Original Message----- From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 3:35 PM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
I think you have encountered a bug of the initial BaseX 10 release: We have upgraded to the new JDK HTTP Client API, and in some cases, headers were not correctly passed on to the server. The bug has recently been fixed in the latest snapshot. Could you give it a try? [1]
BaseX 10.1 will be released later this month. We apologize for the inconvenience, Christian
[1] https://files.basex.org/releases/
On Fri, Aug 12, 2022 at 9:24 PM ykhabins@bellsouth.net wrote:
Mr. Grün,
I followed your suggestion.
Here is my unsuccessful attempt.
The request is failing on SOAPAction that should be a SOAP operation.
Our Web Service has multiple operations.
let $uri := 'https://%E2%80%A6/%E2%80%9D
return http:send-request(
<http:request method="POST" href="{$uri}" timeout='120'>
<http:header name="SOAPAction" value="getArrestReportsForExport"/> <http:body media-type='application/xml'> <soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts%22%3E
<soapenv:Header/> <soapenv:Body> <miam:getArrestReportsForExport> <miam:agencyId>000</miam:agencyId> <miam:passphrase> password </miam:passphrase> <miam:fromDate>2022-08-12T06:35:01</miam:fromDate> </miam:getArrestReportsForExport> </soapenv:Body> </soapenv:Envelope> </http:body>
</http:request>
)
Getting back the following error:
<faultstring>no SOAPAction header!</faultstring>
Here is full response:
<http:response xmlns:http="http://expath.org/ns/http-client" status="500" message="Internal Server Error"> <http:header name="connection" value="close"/> <http:header name="content-language" value="en-US"/> <http:header name="content-security-policy" value="default-src *; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'; media-src *; img-src * data:"/> <http:header name="content-type" value="text/xml; charset=utf-8"/> <http:header name="date" value="Fri, 12 Aug 2022 18:57:02 GMT"/> <http:header name="set-cookie" value="NSC_bgpsnqse.njbnjebef.hpw_TTM=ffffffff09da352b45525d5f4f58455e445a4a42378b;expires=Fri, 12-Aug-2022 19:13:41 GMT;path=/;secure;httponly"/> <http:header name="strict-transport-security" value="max-age=31536000; includeSubDomains"/> <http:header name="transfer-encoding" value="chunked"/> <http:header name="x-content-type-options" value="nosniff"/> <http:header name="x-forwarded-for" value="10.5.34.112"/> <http:header name="x-frame-options" value="SAMEORIGIN"/> <http:header name="x-powered-by" value="Servlet/3.0"/> <http:header name="x-xss-protection" value="1; mode=block"/> <http:body media-type="text/xml"/> </http:response> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance%22%3E soapenv:Body soapenv:Fault <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode> <faultstring>no SOAPAction header!</faultstring>
<detail> <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">s0144517</ns2:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 11:56 AM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
SOAP calls are nothing else than simple HTTP requests using the POST method and XML payloads. You can have a look at the following example [1]. You'll need to adjust the target URI and the body (the user/password attributes can possibly be dropped if the SOAP server does not require basic or digest authentication).
Hope this helps
Christian
[1] https://docs.basex.org/wiki/HTTP_Client_Module#POST_Request
ykhabins@bellsouth.net schrieb am Fr., 12. Aug. 2022, 17:48:
Mr. Grün,
The documentation is covering just the REST calls. I need to make SOAP call. It seems that it is not coverd in the HTTP_Client_Module documentation.
It is not clear how to specify an operation/method on a SOAP service.
Here is a sample of the request exposed via SoapUI. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:miam="http://miamiarrest.ws.ts%22%3E soapenv:Header/ soapenv:Body miam:getArrestReportsForExport miam:agencyId000</miam:agencyId> miam:passphrasepassword</miam:passphrase> miam:fromDate2022-08-02T06:35:01</miam:fromDate> </miam:getArrestReportsForExport> </soapenv:Body> </soapenv:Envelope>
Regards, Yitzhak Khabinsky
-----Original Message----- From: Christian Grün christian.gruen@gmail.com Sent: Friday, August 12, 2022 7:41 AM To: Yitzhak Khabinsky ykhabins@bellsouth.net Cc: BaseX basex-talk@mailman.uni-konstanz.de Subject: Re: [basex-talk] BaseX 10.0 as a SOAP client
Hi Yitzhak,
Is it possible to make calls to SOAP Web Service from the BaseX 10.0?
That’s no problem; you can use the HTTP Client Module for that [1].
Best, Christian
basex-talk@mailman.uni-konstanz.de