KD SOAP API Documentation 2.2
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
KDSoapClientInterface Class Reference

#include <KDSoapClientInterface.h>

Public Types

enum  SoapVersion { SOAP1_1 = 1 , SOAP1_2 = 2 }
 
enum  Style { RPCStyle , DocumentStyle }
 

Public Member Functions

 KDSoapClientInterface (const KDSoapClientInterface &)=delete
 
 KDSoapClientInterface (const QString &endPoint, const QString &messageNamespace)
 
 ~KDSoapClientInterface ()
 
KDSoapPendingCall asyncCall (const QString &method, const KDSoapMessage &message, const QString &soapAction=QString(), const KDSoapHeaders &headers=KDSoapHeaders())
 
KDSoapMessage call (const QString &method, const KDSoapMessage &message, const QString &soapAction=QString(), const KDSoapHeaders &headers=KDSoapHeaders())
 
void callNoReply (const QString &method, const KDSoapMessage &message, const QString &soapAction=QString(), const KDSoapHeaders &headers=KDSoapHeaders())
 
QNetworkCookieJarcookieJar () const
 
QString endPoint () const
 
void ignoreSslErrors ()
 
void ignoreSslErrors (const QList< QSslError > &errors)
 ignoreSslErrors If this function is called, the SSL errors given in errors will be ignored. Note that you can set the expected certificate in the SSL error. See QNetworkReply::ignoreSslErrors() for more information.
 
KDSoapHeaders lastResponseHeaders () const
 
KDSoapClientInterfaceoperator= (const KDSoapClientInterface &)=delete
 
QNetworkProxy proxy () const
 
bool sendSoapActionInHttpHeader () const
 sendActionInHTTP_Header
 
bool sendSoapActionInWsAddressingHeader () const
 sendSoapActionInWsAddressingHeader
 
void setAuthentication (const KDSoapAuthentication &authentication)
 
void setCookieJar (QNetworkCookieJar *jar)
 
void setEndPoint (const QString &endPoint)
 
void setHeader (const QString &name, const KDSoapMessage &header)
 
void setMessageAddressingProperties (const KDSoapMessageAddressingProperties &map)
 
void setProxy (const QNetworkProxy &proxy)
 
void setRawHTTPHeaders (const QMap< QByteArray, QByteArray > &headers)
 
void setSendSoapActionInHttpHeader (bool sendInHttpHeader)
 setSendSoapActionInHttpHeader
 
void setSendSoapActionInWsAddressingHeader (bool sendInWsAddressingHeader)
 setSendSoapActionInWsAddressingHeader
 
void setSoapVersion (KDSoapClientInterface::SoapVersion version)
 
void setSslConfiguration (const QSslConfiguration &config)
 
void setStyle (Style style)
 
void setTimeout (int msecs)
 
KDSoapClientInterface::SoapVersion soapVersion () const
 
QSslConfiguration sslConfiguration () const
 
KDSoapSslHandlersslHandler () const
 
Style style () const
 
int timeout () const
 

Detailed Description

KDSoapClientInterface is a generic accessor class that is used to place calls to remote SOAP objects. This class is useful for dynamic access to remote objects: that is, when you do not have a generated code that represents the remote interface.

const int year = 2009;
const QString endPoint = QLatin1String("http://www.27seconds.com/Holidays/US/Dates/USHolidayDates.asmx");
const QString messageNamespace = QLatin1String("http://www.27seconds.com/Holidays/US/Dates/");
KDSoapClientInterface client(endPoint, messageNamespace);
KDSoapMessage message;
message.addArgument(QLatin1String("year"), year);
qDebug("Looking up the date of Valentine's Day in %i...", year);
KDSoapMessage response = client.call(QLatin1String("GetValentinesDay"), message);
qDebug("%s", qPrintable(response.arguments()[0].value().toString()));
void addArgument(const QString &argumentName, const QVariant &argumentValue, const QString &typeNameSpace=QString(), const QString &typeName=QString())
KDSoapValueList & arguments()
T value(int i) const const

Definition at line 50 of file KDSoapClientInterface.h.

Member Enumeration Documentation

◆ SoapVersion

Version of the SOAP protocol to use when sending requests.

See also
setSoapVersion()
Enumerator
SOAP1_1 

Use format version 1.1 of the SOAP specification

SOAP1_2 

Use format version 1.2 of the SOAP specification

Definition at line 57 of file KDSoapClientInterface.h.

◆ Style

WSDL style. See the "style" attribute for soap:binding, in the WSDL file. See https://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ for a discussion on the pros and cons of both styles.

In RPC style, the method name passed to call() or asyncCall() is sent as an xml element wrapping the message parameters.

In Document style, the KDSoapMessage represents the entire "document" to be sent, so the the method name passed to call() or asyncCall() is ignored, and the name of the KDSoapMessage is used as the main xml element name. This difference is mostly useful in the case of generated code, so that it can serialize existing complex types, and send them as messages.

Enumerator
RPCStyle 

the method name is sent as an xml element wrapping the message parameters

DocumentStyle 

the message is sent as is, the method name is usually the name of the message

Definition at line 254 of file KDSoapClientInterface.h.

Constructor & Destructor Documentation

◆ KDSoapClientInterface() [1/2]

KDSoapClientInterface::KDSoapClientInterface ( const QString endPoint,
const QString messageNamespace 
)
explicit

Creates a KDSoapClientInterface object associated with the end point endPoint.

Note
No connection is done yet at this point, the parameters are simply stored for later use.
Parameters
endPointthe URL of the SOAP service, including http or https scheme, port number if needed, and path. Example: http://server/path/soap.php
messageNamespacethe namespace URI used for the message and its arguments. Example: http://server/path, but could be any URI, it doesn't have to exist or even to be http, this is really just a namespace, which is part of the specification of the SOAP service.

Definition at line 28 of file KDSoapClientInterface.cpp.

References endPoint(), KDSoapClientInterfacePrivate::m_endPoint, KDSoapClientInterfacePrivate::m_messageNamespace, KDSoapClientInterfacePrivate::m_version, and KDSoap::SOAP1_1.

◆ ~KDSoapClientInterface()

KDSoapClientInterface::~KDSoapClientInterface ( )

Destroys the object interface and frees up any resource used.

Warning
Any running asynchronous calls will be canceled.

Definition at line 36 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_thread, KDSoapClientThread::stop(), and QThread::wait().

◆ KDSoapClientInterface() [2/2]

KDSoapClientInterface::KDSoapClientInterface ( const KDSoapClientInterface )
delete

Member Function Documentation

◆ asyncCall()

KDSoapPendingCall KDSoapClientInterface::asyncCall ( const QString method,
const KDSoapMessage message,
const QString soapAction = QString(),
const KDSoapHeaders headers = KDSoapHeaders() 
)

Calls the method method on this interface and passes the arguments specified in message to the method.

Parameters
methodthe method name, without arguments. For instance "addContact". Only used in RPC style.
messagearguments for the method call
soapActionoptional "SoapAction" header, see the specification of the SOAP service. You are strongly encouraged to pass a value here, even if it's just "", given that by default (for a null string) KDSoap will generate a SOAPAction for backwards compatibility reasons.
headersoptional arguments which will be passed as <soap:Header>.

This is an asynchronous call, so this function returns immediately. The returned KDSoapPendingCall object can be used to find out information about the reply. You should create a KDSoapPendingCallWatcher to connect to the finished() signal.

Warning
The returned KDSoapPendingCall object (or a copy of it) must stay alive for the whole duration of the call. If you do not want to wait for a response, use callNoReply instead.
const int year = 2009;
const QString endPoint = QLatin1String("http://www.27seconds.com/Holidays/US/Dates/USHolidayDates.asmx");
const QString messageNamespace = QLatin1String("http://www.27seconds.com/Holidays/US/Dates/");
KDSoapClientInterface* client= new KDSoapClientInterface(endPoint, messageNamespace);
KDSoapMessage message;
message.addArgument(QLatin1String("year"), year);
qDebug("Looking up the date of Valentine's Day in %i...", year);
KDSoapPendingCall pendingCall = client->asyncCall(QLatin1String("GetValentinesDay"), message);
// create a watcher object that will signal the call's completion
KDSoapPendingCallWatcher* watcher = new KDSoapPendingCallWatcher(pendingCall, this);
this, &MyClass::pendingCallFinished);
void MyClass::pendingCallFinished(KDSoapPendingCallWatcher* pendingCall)
{
KDSoapMessage response = pendingCall->returnMessage();
qDebug("%s", qPrintable(response.arguments()[0].value().toString()));
}
KDSoapPendingCall asyncCall(const QString &method, const KDSoapMessage &message, const QString &soapAction=QString(), const KDSoapHeaders &headers=KDSoapHeaders())
void finished(KDSoapPendingCallWatcher *self)
KDSoapMessage returnMessage() const

Definition at line 170 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::accessManager(), call(), QBuffer::data(), KDSoapClientInterfacePrivate::m_version, maybeDebugRequest(), QNetworkAccessManager::post(), KDSoapClientInterfacePrivate::prepareRequest(), KDSoapClientInterfacePrivate::prepareRequestBuffer(), QNetworkReply::request(), and KDSoapClientInterfacePrivate::setupReply().

◆ call()

KDSoapMessage KDSoapClientInterface::call ( const QString method,
const KDSoapMessage message,
const QString soapAction = QString(),
const KDSoapHeaders headers = KDSoapHeaders() 
)

Calls the method method on this interface and passes the parameters specified in message to the method.

Parameters
methodthe method name, without arguments. For instance "addContact". Only used in RPC style.
messagearguments for the method call
soapActionoptional "SoapAction" header, see the specification of the SOAP service. You are strongly encouraged to pass a value here, even if it's just "", given that by default (for a null string) KDSoap will generate a SOAPAction for backwards compatibility reasons.
headersoptional arguments which will be passed as <soap:Header>.
Warning
This is a blocking call. It is NOT recommended to use this in the main thread of graphical applications, since it will block the event loop for the duration of the call. Use this only in threads, or in non-GUI programs.

Definition at line 183 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::accessManager(), QNetworkAccessManager::cookieJar(), KDSoapClientThread::enqueue(), QThread::isRunning(), KDSoapClientInterfacePrivate::m_authentication, KDSoapThreadTaskData::m_authentication, KDSoapClientInterfacePrivate::m_lastResponseHeaders, KDSoapClientInterfacePrivate::m_thread, KDSoapThreadTaskData::response(), KDSoapThreadTaskData::responseHeaders(), QThread::start(), and KDSoapThreadTaskData::waitForCompletion().

Referenced by asyncCall().

◆ callNoReply()

void KDSoapClientInterface::callNoReply ( const QString method,
const KDSoapMessage message,
const QString soapAction = QString(),
const KDSoapHeaders headers = KDSoapHeaders() 
)

Calls the method method on this interface and passes the parameters specified in message to the method.

Parameters
methodthe method name, without arguments. For instance "addContact". Only used in RPC style.
messagearguments for the method call
soapActionoptional "SoapAction" header, see the specification of the SOAP service. You are strongly encouraged to pass a value here, even if it's just "", given that by default (for a null string) KDSoap will generate a SOAPAction for backwards compatibility reasons.
headersoptional arguments which will be passed as <soap:Header>.

This is an asynchronous call, where the caller does not want to wait for a response. The method returns immediately, the call is performed later. No error handling is possible.

Definition at line 203 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::accessManager(), QObject::connect(), QBuffer::data(), QObject::deleteLater(), QNetworkReply::finished(), maybeDebugRequest(), QNetworkAccessManager::post(), KDSoapClientInterfacePrivate::prepareRequest(), KDSoapClientInterfacePrivate::prepareRequestBuffer(), QNetworkReply::request(), and KDSoapClientInterfacePrivate::setupReply().

◆ cookieJar()

QNetworkCookieJar * KDSoapClientInterface::cookieJar ( ) const

Returns the cookie jar to use for the HTTP requests. If no cookie jar was set by setCookieJar previously, a default one will be returned, which belongs to the client interface (no need to delete it).

Since
1.2

Definition at line 318 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::accessManager(), and QNetworkAccessManager::cookieJar().

◆ endPoint()

QString KDSoapClientInterface::endPoint ( ) const

Returns the end point of the SOAP service.

Since
1.2

Definition at line 225 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_endPoint.

Referenced by KDSoapClientInterface(), and setEndPoint().

◆ ignoreSslErrors() [1/2]

void KDSoapClientInterface::ignoreSslErrors ( )

Asks Qt to ignore ssl errors in https requests. Use this for testing only!

Definition at line 241 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_ignoreSslErrors.

◆ ignoreSslErrors() [2/2]

void KDSoapClientInterface::ignoreSslErrors ( const QList< QSslError > &  errors)

ignoreSslErrors If this function is called, the SSL errors given in errors will be ignored. Note that you can set the expected certificate in the SSL error. See QNetworkReply::ignoreSslErrors() for more information.

Parameters
errorslist of errors to ignore
Since
1.4

Definition at line 247 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_ignoreErrorsList.

◆ lastResponseHeaders()

KDSoapHeaders KDSoapClientInterface::lastResponseHeaders ( ) const

Returns the headers returned by the last synchronous call(). For asyncCall(), use KDSoapPendingCall::returnHeaders().

Since
1.1

Definition at line 303 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_lastResponseHeaders.

◆ operator=()

KDSoapClientInterface & KDSoapClientInterface::operator= ( const KDSoapClientInterface )
delete

◆ proxy()

QNetworkProxy KDSoapClientInterface::proxy ( ) const

Returns the network proxy used for the HTTP requests.

Since
1.2
See also
QNetworkAccessManager::proxy()

Definition at line 335 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::accessManager(), and QNetworkAccessManager::proxy().

Referenced by setProxy().

◆ sendSoapActionInHttpHeader()

bool KDSoapClientInterface::sendSoapActionInHttpHeader ( ) const

sendActionInHTTP_Header

Returns
true if the SOAP action is passed in the HTTP Content-Type of the request. This parameter is used only in the case of SOAP 1.2 requests. This option is enabled by default.
Since
1.11

Definition at line 361 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_sendSoapActionInHttpHeader.

◆ sendSoapActionInWsAddressingHeader()

bool KDSoapClientInterface::sendSoapActionInWsAddressingHeader ( ) const

sendSoapActionInWsAddressingHeader

Returns
true if the SOAP action is embedded to the request's SOAP envelope header. See the headers of the WS-Addressing: https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/messaging-protocols#message-addressing-headers This option is disabled by default, the SOAP action is sent in the Conten-Type HTTP header. See setSendHTTPActionParameter for more details.
Since
1.11

Definition at line 371 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_sendSoapActionInWsAddressingHeader.

◆ setAuthentication()

void KDSoapClientInterface::setAuthentication ( const KDSoapAuthentication authentication)

Provide the necessary authentication for this service.

Parameters
authenticationthe authentication data

Definition at line 220 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_authentication.

◆ setCookieJar()

void KDSoapClientInterface::setCookieJar ( QNetworkCookieJar jar)

Sets the cookie jar to use for the HTTP requests. The ownership of the cookie jar is NOT transferred, so that it is possible to share the same cookie jar between multiple client interfaces.

Since
1.2

Definition at line 323 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::accessManager(), QObject::parent(), QNetworkAccessManager::setCookieJar(), and QObject::setParent().

◆ setEndPoint()

void KDSoapClientInterface::setEndPoint ( const QString endPoint)

Sets the end point of the SOAP service.

Parameters
endPointthe URL of the SOAP service, including http or https scheme, port number if needed, and path. Example: http://server/path/soap.php
Since
1.2

Definition at line 230 of file KDSoapClientInterface.cpp.

References endPoint(), and KDSoapClientInterfacePrivate::m_endPoint.

◆ setHeader()

void KDSoapClientInterface::setHeader ( const QString name,
const KDSoapMessage header 
)

Sets a persistent header, which will be sent with any subsequent SOAP call.

Parameters
nameinternal name, used to replace any existing header previously set with this name
headerthe actual message to be sent

Definition at line 235 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_persistentHeaders.

◆ setMessageAddressingProperties()

void KDSoapClientInterface::setMessageAddressingProperties ( const KDSoapMessageAddressingProperties map)

Sets the message addressing properties that will be written in the header for all future messages. This method is useful for client code generated from WSDL. Note that this takes precedence over KDSoapMessage::setMessageAddressingProperties.

Since
2.2

Definition at line 355 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_hasMessageAddressingProperties, and KDSoapClientInterfacePrivate::m_messageAddressingProperties.

◆ setProxy()

void KDSoapClientInterface::setProxy ( const QNetworkProxy proxy)

Sets the network proxy used for the HTTP requests.

Since
1.2
See also
QNetworkAccessManager::setProxy()

Definition at line 340 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::accessManager(), proxy(), and QNetworkAccessManager::setProxy().

◆ setRawHTTPHeaders()

void KDSoapClientInterface::setRawHTTPHeaders ( const QMap< QByteArray, QByteArray > &  headers)

Sets additional HTTP headers in the requests

Since
1.4
See also
QNetworkAccessManager::setRawHeader()

Definition at line 330 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_httpHeaders.

◆ setSendSoapActionInHttpHeader()

void KDSoapClientInterface::setSendSoapActionInHttpHeader ( bool  sendInHttpHeader)

setSendSoapActionInHttpHeader

Parameters
sendInHttpHeaderThis option can be used to enable/disable the sending of the SOAP action parameter in the Content-Type HTTP header (in the case of SOAP 1.2 requests). It might be necessary to disable it for certain SOAP server implementations in the case if the action is passed in the SOAP envelope's header with WS-Addressing.
Since
1.11

Definition at line 366 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_sendSoapActionInHttpHeader.

◆ setSendSoapActionInWsAddressingHeader()

void KDSoapClientInterface::setSendSoapActionInWsAddressingHeader ( bool  sendInWsAddressingHeader)

setSendSoapActionInWsAddressingHeader

Parameters
sendInWsAddressingHeaderThis function can be used to enable/disable the sending of the SOAP action embedded to the request's SOAP envelope header. See the headers of the WS-Addressing: https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/messaging-protocols#message-addressing-headers
Since
1.11

Definition at line 376 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_sendSoapActionInWsAddressingHeader.

◆ setSoapVersion()

void KDSoapClientInterface::setSoapVersion ( KDSoapClientInterface::SoapVersion  version)

Sets the SOAP version to be used for any subsequent SOAP call.

Parameters
versionSOAP1_1 or SOAP1_2 The default version is SOAP 1.1.

Definition at line 43 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_version.

◆ setSslConfiguration()

void KDSoapClientInterface::setSslConfiguration ( const QSslConfiguration config)

Sets the ssl configuration used for outgoing connections

Since
1.3

Definition at line 387 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_sslConfiguration.

◆ setStyle()

void KDSoapClientInterface::setStyle ( KDSoapClientInterface::Style  style)

Sets the WSDL style used by this service.

Since
1.1

Definition at line 308 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_style, and style().

◆ setTimeout()

void KDSoapClientInterface::setTimeout ( int  msecs)

Sets the timeout used for future requests, in milliseconds. A negative value disables the timeout feature.

Since
1.8

Definition at line 350 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_timeout.

◆ soapVersion()

KDSoapClientInterface::SoapVersion KDSoapClientInterface::soapVersion ( ) const

Returns the version of SOAP being used in this instance.

Definition at line 48 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_version.

◆ sslConfiguration()

QSslConfiguration KDSoapClientInterface::sslConfiguration ( ) const

Returns the ssl configuration used for outgoing connections

Since
1.3

Definition at line 382 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_sslConfiguration.

◆ sslHandler()

KDSoapSslHandler * KDSoapClientInterface::sslHandler ( ) const

Returns the ssl handler object, which can be used for notification and handling of SSL errors.

Note that the notifications from synchronous calls will come in delayed, after the synchronous call failed. For this reason, it is not possible to ignore specific ssl errors during runtime when using synchronous calls. Use asynchronous calls instead.

Since
1.3

Definition at line 392 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_sslHandler.

◆ style()

KDSoapClientInterface::Style KDSoapClientInterface::style ( ) const

Returns the WSDL style used by this service.

Since
1.1

Definition at line 313 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_style.

Referenced by setStyle().

◆ timeout()

int KDSoapClientInterface::timeout ( ) const

Returns the timeout used for requests, in milliseconds. The default timeout is 30 minutes.

Since
1.8

Definition at line 345 of file KDSoapClientInterface.cpp.

References KDSoapClientInterfacePrivate::m_timeout.


The documentation for this class was generated from the following files:

© Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-soap/
Generated on Sat Apr 20 2024 00:04:25 for KD SOAP API Documentation by doxygen 1.9.8