KD SOAP
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 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())
 
void setAuthentication (const KDSoapAuthentication &authentication)
 
void setHeader (const QString &name, const KDSoapMessage &header)
 
void setSoapVersion (SoapVersion version)
 
SoapVersion soapVersion ()
 
QString endPoint () const
 
void setEndPoint (const QString &endPoint)
 
QNetworkCookieJar * cookieJar () const
 
void setCookieJar (QNetworkCookieJar *jar)
 
QNetworkProxy proxy () const
 
void setProxy (const QNetworkProxy &proxy)
 
void setRawHTTPHeaders (const QMap< QByteArray, QByteArray > &headers)
 
void setStyle (Style style)
 
Style style () const
 
KDSoapHeaders lastResponseHeaders () 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. More...
 
KDSoapSslHandlersslHandler () const
 
QSslConfiguration sslConfiguration () const
 
void setSslConfiguration (const QSslConfiguration &config)
 

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()));

Member Enumeration Documentation

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

WSDL style. See the "style" attribute for soap:binding, in the WSDL file. See http://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

Constructor & Destructor Documentation

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.
KDSoapClientInterface::~KDSoapClientInterface ( )

Destroys the object interface and frees up any resource used.

Warning
Any running asynchronous calls will be canceled.

Member Function Documentation

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
methodmethod 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.
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);
connect(watcher, SIGNAL(finished(KDSoapPendingCallWatcher*)),
this, SLOT(pendingCallFinished(KDSoapPendingCallWatcher*)));
void MyClass::pendingCallFinished(KDSoapPendingCallWatcher* pendingCall)
{
KDSoapMessage response = pendingCall->returnMessage();
qDebug("%s", qPrintable(response.arguments()[0].value().toString()));
}
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
methodmethod 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.
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.
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
methodmethod 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.
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.

void KDSoapClientInterface::setAuthentication ( const KDSoapAuthentication authentication)

Provide the necessary authentication for this service.

Parameters
authenticationthe authentication data
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
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.
KDSoapClientInterface::SoapVersion KDSoapClientInterface::soapVersion ( )

Returns the version of SOAP being used in this instance.

QString KDSoapClientInterface::endPoint ( ) const

Returns the end point of the SOAP service.

Since
1.2
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
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
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
QNetworkProxy KDSoapClientInterface::proxy ( ) const

Returns the network proxy used for the HTTP requests.

Since
1.2
See also
QNetworkAccessManager::proxy()
void KDSoapClientInterface::setProxy ( const QNetworkProxy &  proxy)

Sets the network proxy used for the HTTP requests.

Since
1.2
See also
QNetworkAccessManager::setProxy()
void KDSoapClientInterface::setRawHTTPHeaders ( const QMap< QByteArray, QByteArray > &  headers)

Sets additional HTTP headers in the requests

Since
1.4
See also
QNetworkAccessManager::setRawHeader()
void KDSoapClientInterface::setStyle ( KDSoapClientInterface::Style  style)

Sets the WSDL style used by this service.

Since
1.1
KDSoapClientInterface::Style KDSoapClientInterface::style ( ) const

Returns the WSDL style used by this service.

Since
1.1
KDSoapHeaders KDSoapClientInterface::lastResponseHeaders ( ) const

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

Since
1.1
void KDSoapClientInterface::ignoreSslErrors ( )

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

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
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
QSslConfiguration KDSoapClientInterface::sslConfiguration ( ) const

Returns the ssl configuration used for outgoing connections

Since
1.3
void KDSoapClientInterface::setSslConfiguration ( const QSslConfiguration &  config)

Sets the ssl configuration used for outgoing connections

Since
1.3

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

Klarälvdalens Datakonsult AB (KDAB)
Qt-related services and products
http://www.kdab.com/
http://www.kdab.com/products/kd-soap/