Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2013, 15:00   #1
bumb
Новичок
Джуниор
 
Регистрация: 20.01.2013
Сообщений: 2
По умолчанию Qt SOAP

Я начинаю писать небольшое приложение на Qt. У меня задача, забирать данные через SOAP. Я нагуглил пару страниц про QtSoap, но подключить к проекту его не могу, он отдельно устанавливается? На этих страницах написано для Qt версии 4.5, т.е. оно вообще поддерживается сейчас? Еще в интернете только один древний пример по работе с SOAP для google, который уже этот протокол не поддерживает.
Собственно вопрос, как правильно организовать работу с SOAP? Может смотреть на сторонние библиотеки(гугл показывает на gSoap)?
bumb вне форума Ответить с цитированием
Старый 20.01.2013, 19:54   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Вот что я нашёл здесь: http://www.prog.org.ru/topic_16542_0.html

Цитата:
QtSOAP
(лицензия: LGPL (?))

*QtSOAP. Значит первое что хочу отметить, что это решение перемещено троллями в "архив решений" (качать вроде как с http://qt.gitorious.org/qt-solutions ). не знаю почему, но у меня возникает впечатление что развиваться оно не будет. Впрочем оно и по возможностям весьма специфично-ограниченно - не умеет генерировать код и не умеет сама анализировать WSDL (был бы интерфейс как у php-soap - с вызовом функций сервиса по именам и возможностью просмотреть структуры данных - меня бы устроило и без генерации кода).В итоге - чтобы начать пользоваться веб-сервисом, вам надо вручную сначала изучить wsdl-файл. Ну и "SOAP 1.1 только".
* доки
* Описание того как это пользовать. раз, два.
* описание "как ставить": http://stackoverflow.com/questions/1...t-soap-install
Надеюсь, это вам поможет

P.S. C QtSOAP не работал
8Observer8 вне форума Ответить с цитированием
Старый 21.01.2013, 00:07   #3
bumb
Новичок
Джуниор
 
Регистрация: 20.01.2013
Сообщений: 2
По умолчанию

Спасибо, это очень полезные ссылки.
bumb вне форума Ответить с цитированием
Старый 20.02.2013, 21:22   #4
sfour.aj
Новичок
Джуниор
 
Регистрация: 20.02.2013
Сообщений: 2
Счастье QtSoap - решено

Недавно сам столкнулся с такой же задачей.
Пробовал GSoap, но не разобрался с ним ( сроки поджимали ), потом скачал QtSoap отдельно, с ним тоже ничего не получилось. После долгого гугленья, я нашел сборку, в которою входил QtSoap (по-моему, QtSolutions), этот пакет собрался без проблем, установил себе в проект, скомпилилось с первого раза (здесь подробно описано).

Делал все по примеру, который дан в Examl-ах. Сразу говорю, через функции setMethodArgument сформировать запрос под мой WSDL не получилось, поэтому генерил запрос через SoapUi и вставлял в реквест через функцию setContent у QtSoapMessage (мануал от digia по функциям здесь). Результаты парсил через QDomDocument (не знаю, почему QtSoapType ответа оказался невалидным, может из-за того, что руки у меня кривые, но сейчас все отлично работает). Если кому-нибудь еще это нужно, соберусь с силами и выложу свое решение.
sfour.aj вне форума Ответить с цитированием
Старый 06.03.2013, 03:59   #5
Zobart
Новичок
Джуниор
 
Регистрация: 07.10.2011
Сообщений: 1
По умолчанию

Если вас не затруднит, выложите пожалуйста ваше решение по qtSoap.
Zobart вне форума Ответить с цитированием
Старый 13.03.2013, 13:37   #6
sfour.aj
Новичок
Джуниор
 
Регистрация: 20.02.2013
Сообщений: 2
По умолчанию

Мне это все было нужно для репликации БД, на сервере стоял WSDL-сервис, позволяющий делать запросы к удаленной mysql-базе. Основное приложение на Qt, поэтому прибегнул к помощи QtSolutions.

Сразу скажу, что чистым QtSoap все реализовать не получилось, по причине несоответствия структуры запроса формату, поддерживаемому моим wsdl. Поэтому прибег к помощи SoapUi. Ответ парсил через доммодель, QtSoap использовал для отправки запросов и получения ответов.

Алгоритм состоит из трех (+) пунктов:
  1. Инициализация транспортера
  2. Отправка запроса
  3. Обработка ответа сервиса
  4. Парсинг результатов через QDomDocument

Инициализация:
Код:
void initialize(); //инициализация QtSoapHttpTransport
QtSoapHttpTransport http;
...
// Connect signals to slots. Note the submitRequest() slots.
 connect(&http, SIGNAL(responseReady()), SLOT(getResponse()));
Отправка запроса :
Код:
void MyClass::Update()
 {
 // Prepare to submit request.
http.setHost(sHost); //IP моего сервера
submitRequest();
}
void submitRequest(){
...
QtSoapMessage request;
 request.setContent(QByteArray().append(str));
 qDebug() << request.toXmlString();
 
http.submitRequest(request, "/services/myserver"); //передаем имя текущего action-а
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
...
}
Обработка запроса:
Код:
void MyClass::getResponse()
 {
// Восстанавливаем вид курсора
 QApplication::restoreOverrideCursor();
 
// Получаем ответ
 
const QtSoapMessage &resp = http.getResponse();
//Записываем полученный xml в файл
 QFile file(QString(dirOutput.absolutePath()).append("/").append(ui.listWidget->item(iCurrentDatabase)->text()).append(".xml"));
 if(file.open(QIODevice::WriteOnly)){
 file.write(QByteArray().append(resp.toXmlString()));
 file.close();
 
addString(tr("File downloaded: ").append(file.fileName()));
 }
 ...
 submitRequest();
 
}
Подробнее можете почитать здесь.

Офтоп: сорри, ответил бы раньше - почему-то не приходят уведомления, может кто знает, как настроить автоматическую рассылку уведомлений о новом комментарии в постах?
sfour.aj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SOAP vprsc C# (си шарп) 0 06.12.2012 00:17
SOAP 1.2 C++ korolcov C/C++ Сетевое программирование 0 02.11.2012 14:08
SOAP Аутентификация rdama PHP 0 16.07.2010 09:37
SOAP + PHP kostet PHP 2 17.06.2010 11:55