初始化QtSoap:
soap = new SOAPService(this); soap->setNamespace("http://tempuri.org/"); soap->setHost("192.168.0.160", 5577); soap->setDbName("0532"); messageStr = tr("SOAP初始化成功!\n服务器:192.168.0.70\n端口:5566\ndbName:0532\n"); messager->addMessage(messageStr);
QString actionstr = m_action; actionstr.append(method); //CB_RTU/GetAll soapAction = new QtSoapSimpleType(QtSoapQName(ACTION), actionstr);//"http://tempuri.org/CB_RTU/GetAll" soapAction->setStringValue(MUST_UNDERSTAND); QString tostr = m_to; tostr.append(to); soapTo = new QtSoapSimpleType(QtSoapQName(TO), tostr);//"http://topia:5566/Rtu" soapTo->setStringValue(MUST_UNDERSTAND); if(request == NULL){ request = new QtSoapMessage(); } request->addHeaderItem(soapAction); request->addHeaderItem(soapTo); request->setMethod(method,soapNamespace); //request->addBodyItem(&QtSoapSimpleType(QtSoapQName("asdfasdf"))); request->addMethodArgument(DBNAME, "", dbName); SoapArgument argument; argument.setEntity(entity); do{ if(queue == NULL || queue->isEmpty()) { break; } for(QQueue<QPair<QString, QString> >::const_iterator iterator = queue->begin(); iterator != queue->end(); iterator++) { argument.pushArgument(iterator->first, iterator->second); } }while(0); request->addMethodArgument(argument.entity, "", argument.argumentString); std::cout << request->toXmlString(2).toStdString() << std::endl; http.setHost(host, port); QString ato = to; http.submitRequest(*request, ato.insert(0,"/")); delete soapAction; delete soapTo; request = NULL;绑定信号:
connect(&http, SIGNAL(responseReady(const QtSoapMessage &)), this, SLOT(getResponse(const QtSoapMessage &)));