mirror of
https://gitee.com/drabel/LibQQt.git
synced 2025-01-04 10:18:44 +08:00
add QtSoap
This commit is contained in:
parent
fb822037d7
commit
16fb0b6412
4
QQt.pro
4
QQt.pro
@ -2,7 +2,8 @@ TEMPLATE = subdirs
|
|||||||
CONFIG += ordered
|
CONFIG += ordered
|
||||||
|
|
||||||
SUBDIRS = src/qqt.pro \
|
SUBDIRS = src/qqt.pro \
|
||||||
examples/qqtframe3
|
examples/qqtframe3 \
|
||||||
|
examples/soapQQtOnline
|
||||||
SUBDIRS += examples/framelesshelperwidget
|
SUBDIRS += examples/framelesshelperwidget
|
||||||
SUBDIRS += examples/qqtframe
|
SUBDIRS += examples/qqtframe
|
||||||
SUBDIRS += examples/qqtframe2
|
SUBDIRS += examples/qqtframe2
|
||||||
@ -13,6 +14,7 @@ SUBDIRS += examples/exquisite
|
|||||||
SUBDIRS += examples/QtBuildTool
|
SUBDIRS += examples/QtBuildTool
|
||||||
SUBDIRS += examples/QtSdkManager
|
SUBDIRS += examples/QtSdkManager
|
||||||
SUBDIRS += examples/QQtInstaller
|
SUBDIRS += examples/QQtInstaller
|
||||||
|
SUBDIRS += examples/easter
|
||||||
|
|
||||||
#need bluetooth library
|
#need bluetooth library
|
||||||
#SUBDIRS += examples/qqtbluetoothfiletransferserver
|
#SUBDIRS += examples/qqtbluetoothfiletransferserver
|
||||||
|
78
examples/easter/easter.cpp
Normal file
78
examples/easter/easter.cpp
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Solutions component.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:BSD$
|
||||||
|
** You may use this file under the terms of the BSD license as follows:
|
||||||
|
**
|
||||||
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
|
||||||
|
** of its contributors may be used to endorse or promote products derived
|
||||||
|
** from this software without specific prior written permission.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QLocale>
|
||||||
|
#include "easter.h"
|
||||||
|
|
||||||
|
Easter::Easter(short year, QObject *parent)
|
||||||
|
: QObject(parent), http(this)
|
||||||
|
{
|
||||||
|
connect(&http, SIGNAL(responseReady(const QtSoapMessage &)),
|
||||||
|
this, SLOT(getResponse(const QtSoapMessage &)));
|
||||||
|
|
||||||
|
QtSoapMessage request;
|
||||||
|
request.setMethod("GetEaster",
|
||||||
|
"http://www.27seconds.com/Holidays/US/Dates/");
|
||||||
|
request.addMethodArgument("year", "", year);
|
||||||
|
|
||||||
|
http.setHost("www.27seconds.com");
|
||||||
|
http.setAction("http://www.27seconds.com/Holidays/US/Dates/GetEaster");
|
||||||
|
http.submitRequest(request, "/Holidays/US/Dates/USHolidayDates.asmx");
|
||||||
|
|
||||||
|
qDebug("Looking up the date of easter in %i...", year);
|
||||||
|
this->year = year;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Easter::getResponse(const QtSoapMessage &message)
|
||||||
|
{
|
||||||
|
if (message.isFault()) {
|
||||||
|
qDebug("Error: %s", qPrintable(message.faultString().toString()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
QString res = message.returnValue().toString();
|
||||||
|
QDateTime dt = QDateTime::fromString(res, Qt::ISODate);
|
||||||
|
if (dt.isValid())
|
||||||
|
res = QLocale::c().toString(dt.date());
|
||||||
|
|
||||||
|
qDebug("Easter is: %s", res.toLatin1().constData());
|
||||||
|
}
|
||||||
|
QCoreApplication::quit();
|
||||||
|
}
|
59
examples/easter/easter.h
Normal file
59
examples/easter/easter.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Solutions component.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:BSD$
|
||||||
|
** You may use this file under the terms of the BSD license as follows:
|
||||||
|
**
|
||||||
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
|
||||||
|
** of its contributors may be used to endorse or promote products derived
|
||||||
|
** from this software without specific prior written permission.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef EASTER_H
|
||||||
|
#define EASTER_H
|
||||||
|
#include <qtsoap.h>
|
||||||
|
|
||||||
|
class Easter : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
Easter(short year, QObject *parent = 0);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void getResponse(const QtSoapMessage &);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QtSoapHttpTransport http;
|
||||||
|
int year;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
19
examples/easter/easter.pro
Normal file
19
examples/easter/easter.pro
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#include QQt's header (add QQt header to includepath)
|
||||||
|
include(../../src/qqt_header.pri)
|
||||||
|
|
||||||
|
#CONFIG += BUILD_SRC
|
||||||
|
contains (CONFIG, BUILD_SRC) {
|
||||||
|
#if you want to build src but not link QQt in this project
|
||||||
|
#include(../../src/qqt.pri)
|
||||||
|
} else {
|
||||||
|
#if you want to link QQt library
|
||||||
|
include(../qqt_library.pri)
|
||||||
|
}
|
||||||
|
|
||||||
|
TEMPLATE = app
|
||||||
|
INCLUDEPATH += .
|
||||||
|
CONFIG += console
|
||||||
|
|
||||||
|
# Input
|
||||||
|
HEADERS += easter.h
|
||||||
|
SOURCES += main.cpp easter.cpp
|
67
examples/easter/main.cpp
Normal file
67
examples/easter/main.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Solutions component.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:BSD$
|
||||||
|
** You may use this file under the terms of the BSD license as follows:
|
||||||
|
**
|
||||||
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
|
||||||
|
** of its contributors may be used to endorse or promote products derived
|
||||||
|
** from this software without specific prior written permission.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
This example shows QtSoap with a SOAP::Lite web service.
|
||||||
|
|
||||||
|
Returns the date of easter in a given year.
|
||||||
|
*/
|
||||||
|
#include <QCoreApplication>
|
||||||
|
#include <QFile>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "easter.h"
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
if (argc < 2) {
|
||||||
|
qDebug("XMethods' interface to Easter Dates with a SOAP::Lite service.");
|
||||||
|
qDebug("usage: %s <year>", argv[0]);
|
||||||
|
qDebug(" ");
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
QCoreApplication app(argc, argv);
|
||||||
|
|
||||||
|
Easter easter(atoi(argv[1]), 0);
|
||||||
|
|
||||||
|
return app.exec();
|
||||||
|
}
|
||||||
|
|
11
examples/soapQQtOnline/main.cpp
Normal file
11
examples/soapQQtOnline/main.cpp
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QApplication a(argc, argv);
|
||||||
|
MainWindow w;
|
||||||
|
w.show();
|
||||||
|
|
||||||
|
return a.exec();
|
||||||
|
}
|
97
examples/soapQQtOnline/mainwindow.cpp
Normal file
97
examples/soapQQtOnline/mainwindow.cpp
Normal file
@ -0,0 +1,97 @@
|
|||||||
|
#include "mainwindow.h"
|
||||||
|
|
||||||
|
MainWindow::MainWindow(QWidget* parent)
|
||||||
|
: QWidget(parent)
|
||||||
|
{
|
||||||
|
// 构建控件
|
||||||
|
m_pQQLabel = new QLabel(this);
|
||||||
|
m_pStateLabel = new QLabel(this);
|
||||||
|
m_pQQLineEdit = new QLineEdit(this);
|
||||||
|
m_pStateLineEdit = new QLineEdit(this);
|
||||||
|
m_pSubmitButton = new QPushButton(this);
|
||||||
|
|
||||||
|
m_pStateLineEdit->setReadOnly(true);
|
||||||
|
m_pQQLabel->setText(QString::fromLocal8Bit("QQ号码:"));
|
||||||
|
m_pStateLabel->setText(QString::fromLocal8Bit("QQ状态:"));
|
||||||
|
m_pSubmitButton->setText(QString::fromLocal8Bit("提交"));
|
||||||
|
|
||||||
|
QGridLayout* pLayout = new QGridLayout();
|
||||||
|
pLayout->addWidget(m_pQQLabel, 0, 0);
|
||||||
|
pLayout->addWidget(m_pQQLineEdit, 0, 1);
|
||||||
|
pLayout->addWidget(m_pStateLabel, 1, 0);
|
||||||
|
pLayout->addWidget(m_pStateLineEdit, 1, 1);
|
||||||
|
pLayout->addWidget(m_pSubmitButton, 2, 1, 1, 1, Qt::AlignRight);
|
||||||
|
pLayout->setSpacing(10);
|
||||||
|
pLayout->setContentsMargins(10, 10, 10, 10);
|
||||||
|
setLayout(pLayout);
|
||||||
|
|
||||||
|
// 连接信号槽
|
||||||
|
m_pHttp = new QtSoapHttpTransport(this);
|
||||||
|
connect(m_pSubmitButton, SIGNAL(clicked()), this, SLOT(onSubmit()));
|
||||||
|
connect(m_pHttp, SIGNAL(responseReady(const QtSoapMessage&)), this, SLOT(onResponse(const QtSoapMessage&)));
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindow::~MainWindow()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提交请求
|
||||||
|
void MainWindow::onSubmit()
|
||||||
|
{
|
||||||
|
QtSoapMessage message;
|
||||||
|
|
||||||
|
// 设置方法
|
||||||
|
message.setMethod("qqCheckOnline", "http://WebXml.com.cn/");
|
||||||
|
|
||||||
|
// 设置动作
|
||||||
|
m_pHttp->setAction("http://WebXml.com.cn/qqCheckOnline");
|
||||||
|
|
||||||
|
// 设置主机
|
||||||
|
m_pHttp->setHost("www.webxml.com.cn");
|
||||||
|
|
||||||
|
// 添加方法参数
|
||||||
|
QString strQQ = m_pQQLineEdit->text();
|
||||||
|
message.addMethodArgument("qqCode", "", strQQ);
|
||||||
|
QString strXML = message.toXmlString();
|
||||||
|
|
||||||
|
// 提交请求
|
||||||
|
m_pHttp->submitRequest(message, "/webservices/qqOnlineWebService.asmx");
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::onResponse(const QtSoapMessage& response)
|
||||||
|
{
|
||||||
|
QString strXML = response.toXmlString();
|
||||||
|
QDomDocument doc;
|
||||||
|
doc.setContent(strXML);
|
||||||
|
|
||||||
|
// 接在在线状态
|
||||||
|
QDomNodeList nodeList = doc.elementsByTagName("qqCheckOnlineResult");
|
||||||
|
if (!nodeList.isEmpty())
|
||||||
|
{
|
||||||
|
QDomNode node = nodeList.at(0);
|
||||||
|
QString strResult = node.toElement().text();
|
||||||
|
QString strState("N/A");
|
||||||
|
if (QString::compare(strResult, "Y") == 0)
|
||||||
|
{
|
||||||
|
strState = QString::fromLocal8Bit("在线");
|
||||||
|
}
|
||||||
|
else if (QString::compare(strResult, "N") == 0)
|
||||||
|
{
|
||||||
|
strState = QString::fromLocal8Bit("离线");
|
||||||
|
}
|
||||||
|
else if (QString::compare(strResult, "E") == 0)
|
||||||
|
{
|
||||||
|
strState = QString::fromLocal8Bit("QQ号码错误");
|
||||||
|
}
|
||||||
|
else if (QString::compare(strResult, "A") == 0)
|
||||||
|
{
|
||||||
|
strState = QString::fromLocal8Bit("商业用户验证失败");
|
||||||
|
}
|
||||||
|
else if (QString::compare(strResult, "V") == 0)
|
||||||
|
{
|
||||||
|
strState = QString::fromLocal8Bit("免费用户超过数量");
|
||||||
|
}
|
||||||
|
m_pStateLineEdit->setText(strState);
|
||||||
|
}
|
||||||
|
}
|
29
examples/soapQQtOnline/mainwindow.h
Normal file
29
examples/soapQQtOnline/mainwindow.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#ifndef MAINWINDOW_H
|
||||||
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
|
#include <QMainWindow>
|
||||||
|
#include <qtsoap.h>
|
||||||
|
#include <qqt-qt.h>
|
||||||
|
|
||||||
|
class MainWindow : public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
MainWindow(QWidget* parent = 0);
|
||||||
|
~MainWindow();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onResponse(const QtSoapMessage&);
|
||||||
|
void onSubmit();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QtSoapHttpTransport* m_pHttp;
|
||||||
|
QLabel* m_pQQLabel;
|
||||||
|
QLabel* m_pStateLabel ;
|
||||||
|
QLineEdit* m_pQQLineEdit ;
|
||||||
|
QLineEdit* m_pStateLineEdit;
|
||||||
|
QPushButton* m_pSubmitButton ;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MAINWINDOW_H
|
46
examples/soapQQtOnline/soapQQtOnline.pro
Normal file
46
examples/soapQQtOnline/soapQQtOnline.pro
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#-------------------------------------------------
|
||||||
|
#
|
||||||
|
# Project created by QtCreator 2017-10-27T20:06:56
|
||||||
|
#
|
||||||
|
#-------------------------------------------------
|
||||||
|
#include QQt's header (add QQt header to includepath)
|
||||||
|
include(../../src/qqt_header.pri)
|
||||||
|
|
||||||
|
#CONFIG += BUILD_SRC
|
||||||
|
contains (CONFIG, BUILD_SRC) {
|
||||||
|
#if you want to build src but not link QQt in this project
|
||||||
|
#include(../../src/qqt.pri)
|
||||||
|
} else {
|
||||||
|
#if you want to link QQt library
|
||||||
|
include(../qqt_library.pri)
|
||||||
|
}
|
||||||
|
|
||||||
|
QT += core gui
|
||||||
|
|
||||||
|
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||||
|
|
||||||
|
TARGET = soapQQtOnline
|
||||||
|
TEMPLATE = app
|
||||||
|
|
||||||
|
# The following define makes your compiler emit warnings if you use
|
||||||
|
# any feature of Qt which has been marked as deprecated (the exact warnings
|
||||||
|
# depend on your compiler). Please consult the documentation of the
|
||||||
|
# deprecated API in order to know how to port your code away from it.
|
||||||
|
DEFINES += QT_DEPRECATED_WARNINGS
|
||||||
|
|
||||||
|
# You can also make your code fail to compile if you use deprecated APIs.
|
||||||
|
# In order to do so, uncomment the following line.
|
||||||
|
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||||
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||||
|
|
||||||
|
|
||||||
|
SOURCES += \
|
||||||
|
main.cpp \
|
||||||
|
mainwindow.cpp
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
mainwindow.h
|
||||||
|
|
||||||
|
CONFIG += mobility
|
||||||
|
MOBILITY =
|
||||||
|
|
@ -249,6 +249,8 @@ equals(QKIT_, macOS):DEFINES += __WEBSOCKETSUPPORT__
|
|||||||
contains (DEFINES, __WEBSOCKETSUPPORT__) {
|
contains (DEFINES, __WEBSOCKETSUPPORT__) {
|
||||||
#QSslError not found, you need recompiler Qt4
|
#QSslError not found, you need recompiler Qt4
|
||||||
#TODO: QT += webkit
|
#TODO: QT += webkit
|
||||||
|
#if you use QtSoap, open this annotation
|
||||||
|
DEFINES += __QTSOAP__
|
||||||
}
|
}
|
||||||
|
|
||||||
##################################################################
|
##################################################################
|
||||||
@ -295,3 +297,4 @@ INCLUDEPATH += $$PWD/widgets
|
|||||||
INCLUDEPATH += $$PWD/exquisite
|
INCLUDEPATH += $$PWD/exquisite
|
||||||
# c support
|
# c support
|
||||||
INCLUDEPATH += $$PWD/qrencode
|
INCLUDEPATH += $$PWD/qrencode
|
||||||
|
INCLUDEPATH += $$PWD/soap
|
||||||
|
@ -348,4 +348,13 @@ contains (DEFINES, __WEBSOCKETSUPPORT__) {
|
|||||||
$$PWD/network/qqtftpprotocol.h \
|
$$PWD/network/qqtftpprotocol.h \
|
||||||
$$PWD/network/qqthttpprotocol.h \
|
$$PWD/network/qqthttpprotocol.h \
|
||||||
$$PWD/network/qqtwebprotocol.h
|
$$PWD/network/qqtwebprotocol.h
|
||||||
|
contains(DEFINES, __QTSOAP__) {
|
||||||
|
contains (DEFINES, QQT_LIBRARY) {
|
||||||
|
DEFINES += QT_QTSOAP_LIBRARY
|
||||||
|
}
|
||||||
|
SOURCES += \
|
||||||
|
$$PWD/soap/qtsoap.cpp
|
||||||
|
HEADERS += \
|
||||||
|
$$PWD/soap/qtsoap.h
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
1
src/soap/QtSoapArray
Normal file
1
src/soap/QtSoapArray
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapArrayIterator
Normal file
1
src/soap/QtSoapArrayIterator
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapHttpTransport
Normal file
1
src/soap/QtSoapHttpTransport
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapMessage
Normal file
1
src/soap/QtSoapMessage
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapNamespaces
Normal file
1
src/soap/QtSoapNamespaces
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapQName
Normal file
1
src/soap/QtSoapQName
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapSimpleType
Normal file
1
src/soap/QtSoapSimpleType
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapStruct
Normal file
1
src/soap/QtSoapStruct
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapStructIterator
Normal file
1
src/soap/QtSoapStructIterator
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapType
Normal file
1
src/soap/QtSoapType
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapTypeConstructor
Normal file
1
src/soap/QtSoapTypeConstructor
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapTypeConstructorBase
Normal file
1
src/soap/QtSoapTypeConstructorBase
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
1
src/soap/QtSoapTypeFactory
Normal file
1
src/soap/QtSoapTypeFactory
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "qtsoap.h"
|
3389
src/soap/qtsoap.cpp
Normal file
3389
src/soap/qtsoap.cpp
Normal file
File diff suppressed because it is too large
Load Diff
606
src/soap/qtsoap.h
Normal file
606
src/soap/qtsoap.h
Normal file
@ -0,0 +1,606 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||||
|
** Contact: http://www.qt-project.org/legal
|
||||||
|
**
|
||||||
|
** This file is part of the Qt Solutions component.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:BSD$
|
||||||
|
** You may use this file under the terms of the BSD license as follows:
|
||||||
|
**
|
||||||
|
** "Redistribution and use in source and binary forms, with or without
|
||||||
|
** modification, are permitted provided that the following conditions are
|
||||||
|
** met:
|
||||||
|
** * Redistributions of source code must retain the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer.
|
||||||
|
** * Redistributions in binary form must reproduce the above copyright
|
||||||
|
** notice, this list of conditions and the following disclaimer in
|
||||||
|
** the documentation and/or other materials provided with the
|
||||||
|
** distribution.
|
||||||
|
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
|
||||||
|
** of its contributors may be used to endorse or promote products derived
|
||||||
|
** from this software without specific prior written permission.
|
||||||
|
**
|
||||||
|
**
|
||||||
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef QTSOAP_H
|
||||||
|
#define QTSOAP_H
|
||||||
|
#include <QString>
|
||||||
|
#include <QVariant>
|
||||||
|
#include <QtXml>
|
||||||
|
#include <QNetworkAccessManager>
|
||||||
|
#include <QUrl>
|
||||||
|
#include <QHash>
|
||||||
|
#include <QLinkedList>
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
|
|
||||||
|
#if defined(QT_QTSOAP_LIBRARY)
|
||||||
|
# define QT_QTSOAP_EXPORT Q_DECL_EXPORT
|
||||||
|
#else
|
||||||
|
# define QT_QTSOAP_EXPORT Q_DECL_IMPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define SOAPv11_ENVELOPE "http://schemas.xmlsoap.org/soap/envelope/"
|
||||||
|
#define SOAPv11_ENCODING "http://schemas.xmlsoap.org/soap/encoding/"
|
||||||
|
#define SOAPv11_ACTORNEXT "http://schemas.xmlsoap.org/soap/actor/next"
|
||||||
|
|
||||||
|
#define XML_SCHEMA "http://www.w3.org/1999/XMLSchema"
|
||||||
|
#define XML_SCHEMA_INSTANCE "http://www.w3.org/1999/XMLSchema-instance"
|
||||||
|
#define XML_NAMESPACE "http://www.w3.org/XML/1998/namespace"
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
class QtSmartPtr
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
inline QtSmartPtr(T* data = 0)
|
||||||
|
{
|
||||||
|
d = data;
|
||||||
|
r = new int;
|
||||||
|
*r = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QtSmartPtr(const QtSmartPtr& copy)
|
||||||
|
{
|
||||||
|
if (*copy.r != 0)
|
||||||
|
++(*copy.r);
|
||||||
|
|
||||||
|
r = copy.r;
|
||||||
|
d = copy.d;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline ~QtSmartPtr()
|
||||||
|
{
|
||||||
|
if ((*r) == 0)
|
||||||
|
delete r;
|
||||||
|
else if ((*r) != 0 && --(*r) == 0)
|
||||||
|
{
|
||||||
|
delete r;
|
||||||
|
if (d)
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inline QtSmartPtr& operator =(const QtSmartPtr& copy)
|
||||||
|
{
|
||||||
|
if (*copy.r != 0)
|
||||||
|
++(*copy.r);
|
||||||
|
|
||||||
|
if ((*r) == 0)
|
||||||
|
delete r;
|
||||||
|
else if ((*r) != 0 && --(*r) == 0)
|
||||||
|
{
|
||||||
|
delete r;
|
||||||
|
if (d)
|
||||||
|
delete d;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = copy.r;
|
||||||
|
d = copy.d;
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline T& operator *() const
|
||||||
|
{
|
||||||
|
return *d;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline T* operator ->() const
|
||||||
|
{
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline T* ptr() const
|
||||||
|
{
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline T& ref() const
|
||||||
|
{
|
||||||
|
return *d;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline T* releasedPtr() const
|
||||||
|
{
|
||||||
|
(*r) = 0;
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool isNull() const
|
||||||
|
{
|
||||||
|
return d == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int* r;
|
||||||
|
T* d;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapQName
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSoapQName(const QString& name = QString::null, const QString& uri = QString::null);
|
||||||
|
~QtSoapQName();
|
||||||
|
|
||||||
|
QtSoapQName& operator =(const QString& s);
|
||||||
|
|
||||||
|
QString name() const;
|
||||||
|
QString uri() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QString n;
|
||||||
|
QString nuri;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool operator ==(const QtSoapQName& n1, const QtSoapQName& n2);
|
||||||
|
bool operator <(const QtSoapQName& n1, const QtSoapQName& n2);
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
enum Type
|
||||||
|
{
|
||||||
|
Duration, DateTime, Time, Date, GYearMonth, GYear, GMonthDay,
|
||||||
|
GDay, GMonth, Boolean, Base64Binary, HexBinary, Float, Double,
|
||||||
|
AnyURI, QName, NOTATION, String, NormalizedString, Token, Language,
|
||||||
|
Name, NMTOKEN, NCName, ID, IDREF, ENTITY, Decimal, Integer,
|
||||||
|
NonPositiveInteger, NegativeInteger, Long, Int, Short,
|
||||||
|
Byte, NonNegativeInteger, UnsignedLong, PositiveInteger,
|
||||||
|
UnsignedInt, UnsignedShort, UnsignedByte,
|
||||||
|
Array, Struct, Other
|
||||||
|
};
|
||||||
|
|
||||||
|
QtSoapType();
|
||||||
|
QtSoapType(const QtSoapQName& name, Type t = Other);
|
||||||
|
QtSoapType(const QtSoapType& copy);
|
||||||
|
QtSoapType& operator =(const QtSoapType& copy);
|
||||||
|
virtual ~QtSoapType();
|
||||||
|
|
||||||
|
virtual void clear();
|
||||||
|
|
||||||
|
virtual bool parse(QDomNode);
|
||||||
|
virtual bool isValid() const;
|
||||||
|
|
||||||
|
virtual int count() const;
|
||||||
|
virtual QVariant value() const;
|
||||||
|
|
||||||
|
virtual QtSoapType& operator [](int);
|
||||||
|
virtual QtSoapType& operator [](const QtSoapQName& s);
|
||||||
|
virtual QtSoapType& operator [](const QString& name);
|
||||||
|
|
||||||
|
virtual const QtSoapType& operator [](int) const;
|
||||||
|
virtual const QtSoapType& operator [](const QtSoapQName& s) const;
|
||||||
|
virtual const QtSoapType& operator [](const QString& name) const;
|
||||||
|
|
||||||
|
virtual QDomElement toDomElement(QDomDocument) const;
|
||||||
|
|
||||||
|
virtual Type type() const;
|
||||||
|
virtual QString id() const;
|
||||||
|
virtual QString href() const;
|
||||||
|
virtual QString typeName() const;
|
||||||
|
virtual QtSoapQName name() const;
|
||||||
|
|
||||||
|
virtual QString toString() const;
|
||||||
|
virtual int toInt() const;
|
||||||
|
virtual bool toBool() const;
|
||||||
|
|
||||||
|
void setName(const QtSoapQName&);
|
||||||
|
void setId(const QString&);
|
||||||
|
void setHref(const QString&);
|
||||||
|
|
||||||
|
QString errorString() const;
|
||||||
|
|
||||||
|
static QString typeToName(QtSoapType::Type t);
|
||||||
|
static Type nameToType(const QString&);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
Type t;
|
||||||
|
QString errorStr;
|
||||||
|
QString i;
|
||||||
|
QtSoapQName n;
|
||||||
|
QString u;
|
||||||
|
QString h;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QtSoapArrayIterator;
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapArray : public QtSoapType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSoapArray();
|
||||||
|
QtSoapArray(const QtSoapQName& name, QtSoapType::Type type = Other,
|
||||||
|
int size0 = -1, int size1 = -1, int size2 = -1, int size3 = -1, int size4 = -1);
|
||||||
|
QtSoapArray(const QtSoapArray& copy);
|
||||||
|
QtSoapArray& operator = (const QtSoapArray& copy);
|
||||||
|
~QtSoapArray();
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
bool parse(QDomNode node);
|
||||||
|
bool isValid() const;
|
||||||
|
|
||||||
|
int count() const;
|
||||||
|
|
||||||
|
QtSoapType& at(int pos0);
|
||||||
|
QtSoapType& at(int pos0, int pos1);
|
||||||
|
QtSoapType& at(int pos0, int pos1, int pos2);
|
||||||
|
QtSoapType& at(int pos0, int pos1, int pos2, int pos3);
|
||||||
|
QtSoapType& at(int pos0, int pos1, int pos2, int pos3, int pos4);
|
||||||
|
QtSoapType& operator [](int i);
|
||||||
|
QtSoapType& operator [](const QString&);
|
||||||
|
QtSoapType& operator [](const QtSoapQName&);
|
||||||
|
|
||||||
|
const QtSoapType& at(int pos) const;
|
||||||
|
const QtSoapType& at(int pos0, int pos1) const;
|
||||||
|
const QtSoapType& at(int pos0, int pos1, int pos2) const;
|
||||||
|
const QtSoapType& at(int pos0, int pos1, int pos2, int pos3) const;
|
||||||
|
const QtSoapType& at(int pos0, int pos1, int pos2, int pos3, int pos4) const;
|
||||||
|
const QtSoapType& operator [](int i) const;
|
||||||
|
const QtSoapType& operator [](const QString&) const;
|
||||||
|
const QtSoapType& operator [](const QtSoapQName&) const;
|
||||||
|
|
||||||
|
void append(QtSoapType* item);
|
||||||
|
void insert(int pos0, QtSoapType* item);
|
||||||
|
void insert(int pos0, int pos1, QtSoapType* item);
|
||||||
|
void insert(int pos0, int pos1, int pos2, QtSoapType* item);
|
||||||
|
void insert(int pos0, int pos1, int pos2, int pos3, QtSoapType* item);
|
||||||
|
void insert(int pos0, int pos1, int pos2, int pos3, int pos4, QtSoapType* item);
|
||||||
|
|
||||||
|
QDomElement toDomElement(QDomDocument doc) const;
|
||||||
|
|
||||||
|
friend class QtSoapArrayIterator;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString arraySizeString() const;
|
||||||
|
QString arrayTypeString() const;
|
||||||
|
|
||||||
|
QHash<int, QtSmartPtr<QtSoapType> > array;
|
||||||
|
int lastIndex;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Type arrayType;
|
||||||
|
int order;
|
||||||
|
int siz0, siz1, siz2, siz3, siz4;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapArrayIterator
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSoapArrayIterator(QtSoapArray&);
|
||||||
|
QtSoapArrayIterator(const QtSoapArrayIterator& copy);
|
||||||
|
QtSoapArrayIterator& operator =(const QtSoapArrayIterator& j);
|
||||||
|
~QtSoapArrayIterator();
|
||||||
|
|
||||||
|
int pos() const;
|
||||||
|
void pos(int* pos0, int* pos1 = 0, int* pos2 = 0, int* pos3 = 0, int* pos4 = 0) const;
|
||||||
|
|
||||||
|
QtSoapType* data();
|
||||||
|
const QtSoapType* current() const;
|
||||||
|
|
||||||
|
void operator ++();
|
||||||
|
bool operator !=(const QtSoapArrayIterator& j) const;
|
||||||
|
bool operator ==(const QtSoapArrayIterator& j) const;
|
||||||
|
|
||||||
|
bool atEnd() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QHash<int, QtSmartPtr<QtSoapType> >::Iterator it;
|
||||||
|
QtSoapArray* arr;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QtSoapStructIterator;
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapStruct : public QtSoapType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSoapStruct();
|
||||||
|
QtSoapStruct(const QtSoapQName& name);
|
||||||
|
QtSoapStruct(const QtSoapStruct& copy);
|
||||||
|
QtSoapStruct& operator =(const QtSoapStruct& copy);
|
||||||
|
~QtSoapStruct();
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
bool parse(QDomNode node);
|
||||||
|
bool isValid() const;
|
||||||
|
|
||||||
|
int count() const;
|
||||||
|
|
||||||
|
QtSoapType& at(const QtSoapQName& key);
|
||||||
|
const QtSoapType& at(const QtSoapQName& key) const;
|
||||||
|
|
||||||
|
QtSoapType& operator [](int);
|
||||||
|
QtSoapType& operator [](const QtSoapQName& key);
|
||||||
|
QtSoapType& operator [](const QString& key);
|
||||||
|
|
||||||
|
const QtSoapType& operator [](int) const;
|
||||||
|
const QtSoapType& operator [](const QtSoapQName& key) const;
|
||||||
|
const QtSoapType& operator [](const QString& key) const;
|
||||||
|
|
||||||
|
void insert(QtSoapType* item);
|
||||||
|
|
||||||
|
QDomElement toDomElement(QDomDocument doc) const;
|
||||||
|
|
||||||
|
friend class QtSoapStructIterator;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QList<QtSmartPtr<QtSoapType> > dict;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapStructIterator
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSoapStructIterator(QtSoapStruct&);
|
||||||
|
~QtSoapStructIterator();
|
||||||
|
|
||||||
|
QtSoapQName key() const;
|
||||||
|
QtSoapType* data();
|
||||||
|
const QtSoapType* current() const;
|
||||||
|
|
||||||
|
void operator ++();
|
||||||
|
bool operator !=(const QtSoapStructIterator& j) const;
|
||||||
|
bool operator ==(const QtSoapStructIterator& j) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QList<QtSmartPtr<QtSoapType> >::Iterator it;
|
||||||
|
QList<QtSmartPtr<QtSoapType> >::Iterator itEnd;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapSimpleType : public QtSoapType
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSoapSimpleType();
|
||||||
|
QtSoapSimpleType(const QtSoapQName& name);
|
||||||
|
QtSoapSimpleType(const QtSoapQName& name, int n);
|
||||||
|
QtSoapSimpleType(const QtSoapQName& name, bool n, int dummy);
|
||||||
|
QtSoapSimpleType(const QtSoapQName& name, const QString& n);
|
||||||
|
QtSoapSimpleType(const QtSoapSimpleType& copy);
|
||||||
|
QtSoapSimpleType& operator =(const QtSoapSimpleType& copy);
|
||||||
|
~QtSoapSimpleType();
|
||||||
|
|
||||||
|
void clear();
|
||||||
|
|
||||||
|
bool parse(QDomNode node);
|
||||||
|
bool isValid() const;
|
||||||
|
|
||||||
|
QString toString() const;
|
||||||
|
int toInt() const;
|
||||||
|
bool toBool() const;
|
||||||
|
QVariant value() const;
|
||||||
|
|
||||||
|
QDomElement toDomElement(QDomDocument doc) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QVariant v;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapMessage
|
||||||
|
{
|
||||||
|
friend class QtSoapHttpServer;
|
||||||
|
|
||||||
|
public:
|
||||||
|
QtSoapMessage();
|
||||||
|
QtSoapMessage(const QtSoapMessage& copy);
|
||||||
|
~QtSoapMessage();
|
||||||
|
|
||||||
|
QtSoapMessage& operator =(const QtSoapMessage& copy);
|
||||||
|
|
||||||
|
bool setContent(const QByteArray& buffer);
|
||||||
|
bool setContent(QDomDocument& d);
|
||||||
|
|
||||||
|
void addBodyItem(QtSoapType*);
|
||||||
|
void addHeaderItem(QtSoapType*);
|
||||||
|
|
||||||
|
// Method and response
|
||||||
|
const QtSoapType& method() const;
|
||||||
|
const QtSoapType& returnValue() const;
|
||||||
|
void setMethod(const QtSoapQName&);
|
||||||
|
void setMethod(const QString& name, const QString& url = QString::null);
|
||||||
|
void addMethodArgument(QtSoapType*);
|
||||||
|
void addMethodArgument(const QString& uri, const QString& name, const QString& value);
|
||||||
|
void addMethodArgument(const QString& uri, const QString& name, bool value, int dummy);
|
||||||
|
void addMethodArgument(const QString& uri, const QString& name, int value);
|
||||||
|
|
||||||
|
// Fault
|
||||||
|
enum FaultCode
|
||||||
|
{
|
||||||
|
VersionMismatch,
|
||||||
|
MustUnderstand,
|
||||||
|
Client,
|
||||||
|
Server,
|
||||||
|
Other
|
||||||
|
};
|
||||||
|
|
||||||
|
bool isFault() const;
|
||||||
|
FaultCode faultCode() const;
|
||||||
|
const QtSoapType& faultString() const;
|
||||||
|
const QtSoapType& faultDetail() const;
|
||||||
|
void setFaultCode(FaultCode code);
|
||||||
|
void setFaultString(const QString& fstring);
|
||||||
|
void addFaultDetail(QtSoapType* detail);
|
||||||
|
|
||||||
|
// Generating
|
||||||
|
void clear();
|
||||||
|
QString toXmlString(int indent = 0) const;
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
QString errorString() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
enum MessageType
|
||||||
|
{
|
||||||
|
Fault,
|
||||||
|
MethodRequest,
|
||||||
|
MethodResponse,
|
||||||
|
OtherType
|
||||||
|
};
|
||||||
|
|
||||||
|
bool isValidSoapMessage(const QDomDocument& candidate);
|
||||||
|
|
||||||
|
QtSoapStruct& body() const;
|
||||||
|
QtSoapStruct& header() const;
|
||||||
|
|
||||||
|
void init();
|
||||||
|
|
||||||
|
private:
|
||||||
|
MessageType type;
|
||||||
|
|
||||||
|
mutable QtSoapStruct envelope;
|
||||||
|
|
||||||
|
QtSoapQName m;
|
||||||
|
QtSoapStruct margs;
|
||||||
|
|
||||||
|
QString errorStr;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapTypeConstructorBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
inline QtSoapTypeConstructorBase()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual inline ~QtSoapTypeConstructorBase()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual QtSoapType* createObject(QDomNode) = 0;
|
||||||
|
|
||||||
|
virtual QString errorString() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapTypeConstructor : public QtSoapTypeConstructorBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
QtSoapTypeConstructor()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QtSoapType* createObject(QDomNode node)
|
||||||
|
{
|
||||||
|
T* t = new T();
|
||||||
|
if (t->parse(node))
|
||||||
|
{
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
errorStr = t->errorString();
|
||||||
|
delete t;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QString errorString() const
|
||||||
|
{
|
||||||
|
return errorStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
mutable QString errorStr;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapTypeFactory
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
QtSoapTypeFactory();
|
||||||
|
|
||||||
|
public:
|
||||||
|
~QtSoapTypeFactory();
|
||||||
|
|
||||||
|
static QtSoapTypeFactory& instance();
|
||||||
|
|
||||||
|
bool registerHandler(const QString& name, QtSoapTypeConstructorBase* handler);
|
||||||
|
|
||||||
|
QtSmartPtr<QtSoapType> soapType(QDomNode node) const;
|
||||||
|
|
||||||
|
QString errorString() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
mutable QString errorStr;
|
||||||
|
QHash<QString, QtSoapTypeConstructorBase*> typeHandlers;
|
||||||
|
QLinkedList<QtSoapTypeConstructorBase*> deleteList;
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapNamespaces
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void registerNamespace(const QString& prefix, const QString& uri);
|
||||||
|
QString prefixFor(const QString& ns);
|
||||||
|
|
||||||
|
static QtSoapNamespaces& instance();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QMap<QString, QString> namespaces;
|
||||||
|
QtSoapNamespaces();
|
||||||
|
};
|
||||||
|
|
||||||
|
class QT_QTSOAP_EXPORT QtSoapHttpTransport : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
QtSoapHttpTransport(QObject* parent = 0);
|
||||||
|
~QtSoapHttpTransport();
|
||||||
|
|
||||||
|
void setHost(const QString& host, bool useSecureHTTP = false, int port = 0);
|
||||||
|
void setHost(const QString& host, int port); //obsolete
|
||||||
|
void setAction(const QString& action);
|
||||||
|
void submitRequest(QtSoapMessage& request, const QString& path);
|
||||||
|
const QtSoapMessage& getResponse() const;
|
||||||
|
|
||||||
|
QNetworkAccessManager* networkAccessManager();
|
||||||
|
QNetworkReply* networkReply();
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void responseReady();
|
||||||
|
void responseReady(const QtSoapMessage& response);
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void readResponse(QNetworkReply* reply);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QNetworkAccessManager networkMgr;
|
||||||
|
QPointer<QNetworkReply> networkRep;
|
||||||
|
QUrl url;
|
||||||
|
QString soapAction;
|
||||||
|
QtSoapMessage soapResponse;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user