35size_t storeResults(
void * buf,
size_t sz,
size_t nmemb,
void* userdata);
49 serializeMode_(false),
59 m_buildXmlTree( false),
60 m_xmlTreeProduced( false)
73 serializeMode_(false),
82 m_buildXmlTree( false),
83 m_xmlTreeProduced( false)
86 wParser_ =
new WsdlParser(input,logger_, schemaPath);
100 logger_<<
"An exception occurred at "<<we.
line
101 <<
":"<<we.
col<<std::endl;
107 logger_<<
"An exception occurred at "<<spe.
line
108 <<
":"<<spe.
col<<std::endl;
114 logger_<<
"An exception occurred at "<<xpe.
line
115 <<
":"<<xpe.
col<<std::endl;
130 serializeMode_(false),
139 m_buildXmlTree( false),
140 m_xmlTreeProduced( false)
142 parseWsdl(url, schemaPath);
147WsdlInvoker::parseWsdl(
const std::string & url,
const std::string & schemaPath)
150 wParser_ =
new WsdlParser(url,logger_, schemaPath);
151 ourParser_= wParser_;
162 catch (WsdlException we)
164 logger_<<
"An exception occurred at "<<we.line
165 <<
":"<<we.col<<std::endl;
166 logger_<<we.description<<std::endl;
171 logger_<<
"An exception occurred at "<<spe.
line
172 <<
":"<<spe.
col<<std::endl;
178 logger_<<
"An exception occurred at "<<xpe.
line
179 <<
":"<<xpe.
col<<std::endl;
186WsdlInvoker::init(WsdlParser* parser)
190 status_ = wParser_->
status();
201 (*p1)->getOperations(op1,op2);
212 opMap_[(*op1)->getName()]=*op1;
220 catch (WsdlException we)
222 logger_<<
"A WSDL exception occurred at"<<we.line
223 <<
":"<<we.col<<std::endl;
224 logger_<<we.description<<std::endl;
229 logger_<<
"A Schema Parser exception occurred at "<<spe.
line
230 <<
":"<<spe.
col<<std::endl;
236 logger_<<
"An Xml Parsing exception occurred at row:col "<<xpe.
line
237 <<
":"<<xpe.
col<<std::endl;
249 std::map<std::string,const Operation*>::iterator it =
254 operations.push_back(it->first);
262 std::stringstream result;
271 std::map<std::string,const Operation*>::iterator it =
274 if (it != opMap_.end()){
276 return it->second->getDocumentation();
286 messageType_ = mType;
287 std::map<std::string,const Operation*>::iterator it =
290 if (it != opMap_.end()){
294 getOperationDetails(op_);
316 std::map<std::string,const Operation*>::iterator it =
319 if (it != opMap_.end()){
323 getOperationDetails(op);
330WsdlInvoker::getOperationDetails(
const Operation* op)
349 if (location_.empty()){
351 logger_<<
"No service location specified for SOAP binding "<<bnSoap->
getName()<<std::endl;
356 const int *bindings = 0;
359 int soapOpBindingId = bindings[0];
366 for (
int x=0;x<nBindings;x++){
383WsdlInvoker::serializeHeader()
390 const Message* hMessage;
393 const int *bindings = 0;
395 int nBindings=bnSoap->getInputBinding(opIndex,bindings);
397 for (
int x=0;x<nBindings;x++){
405 if (hMessage->getPartRefType(hPartId)==
Part::Elem){
407 name = hMessage->getMessagePart(hPartId)->element()->getName();
408 pType = (
Schema::Type)hMessage->getMessagePart(hPartId)->element()->getType();
412 name = hMessage->getPartName(hPartId);
413 pType = (
Schema::Type)hMessage->getMessagePart(hPartId)->type();
415 std::vector<std::string> parents;
416 parents.push_back(name);
420 1,1,parents,hnsp_,
true);
423 iHeaders_ = elems_.size();
433WsdlInvoker::serialize()
435 const Message * m = op_->
getMessage(messageType_);
439 for (
int i = 0 ;i<m->getNumParts();i++){
442 const Part * p = m->getMessagePart(i);
446 std::vector<std::string> parents;
449 const Element * e = p->element();
458 serializeType((
Schema::Type)p->type(),p->name(),sParser,1,1,parents,nsp,
true);
465 const std::string &tag,
469 std::vector<std::string> parents,
470 const std::string nsp,
482 for (
size_t z=0;z<avoidrecurse_.size();z++){
484 if (avoidrecurse_[z] == pType)
488 avoidrecurse_.push_back(pType);
494 if (serializeMode_ ==
false){
496 parents.push_back(tag);
497 Parameter p(typeId,t,minimum,maximum,sParser,parents);
509 serializeParam(n_++,t,sParser,nsp,isRoot);
528 xmlStream_->
setPrefix(getPrefix(nsp),nsp);
543 if(isSoapArray(ct,sParser)){
545 std::string arrayName = ct->
getName();
546 arrayName =
"ns:"+arrayName+
"[1]";
577 if (serializeMode_ ==
false){
579 std::vector<std::string> attparents(parents);
580 attparents.push_back(tag);
581 attparents.push_back(
"#" + at->
getName() +
"#");
599 if (serializeMode_ ==
false){
601 parents.push_back(tag);
607 serializeParam(n_++,t,sParser,nsp,isRoot);
613 if (baseType && !baseType->
isSimple()){
618 if (!isSoapArray(ct,sParser)){
620 parents.push_back(tag);
621 serializeContentModel(bCm,sParser,parents);
628 parents.push_back(tag);
629 serializeContentModel(cm,sParser,parents);
645 xmlStream_->
endTag(nsp,t);
658 avoidrecurse_.pop_back();
664 std::vector<std::string> parents)
681 for (ci=cit_b;ci!=cit_e;ci++){
684 ci->first.e->getMax() > 0){
692 if (!ci->first.e->getTypeNamespace().empty() &&
693 sParser->
isImported(ci->first.e->getTypeNamespace()) &&
694 sParser->
getNamespace() != ci->first.e->getTypeNamespace()) {
702 if(ci->first.e->getNamespace() != s1Parser->
getNamespace()){
703 nsp = ci->first.e->getNamespace();
709 if ((ci->first.e->getMin() == 0) &&
710 serializeMode_ && !sParser->
isBasicType(ci->first.e->getType()) && isSubTreeNil() ) {
712 serializeParam(-1,ci->first.e->getName(),sParser,nsp,isRoot);
720 ci->first.e->getName(),
722 ci->first.e->getMin(),
723 ci->first.e->getMax(),
732 serializeContentModel(ci->first.c,
740 serializeContentModel(ci->first.g->getContents(),
752WsdlInvoker::serializeParam(
int n,
const std::string & tag,
754 const std::string nsp,
768 for (
int i = 0 ;i<elems_[n].n_;i++){
778 xmlStream_->
setPrefix(getPrefix(nsp),nsp);
798 xmlStream_->
text(elems_[n].data_[i]);
800 xmlStream_->
endTag(nsp,t);
811 if (occurs < elems_[param].min_ ||
812 occurs > elems_[param].max_)
816 for (
unsigned int i = 0 ;i < occurs ;i++){
819 elems_[param].type_);
824 std::ostringstream oss;
826 elems_[param].data_.push_back(oss.str());
831 elems_[param].n_ = occurs;
840 if (values.size() < elems_[param].min_ ||
841 values.size() > elems_[param].max_)
846 for (
size_t i = 0 ;i < values.size() ;i++){
849 elems_[param].type_);
854 elems_[param].data_.push_back(values[i]);
859 elems_[param].n_ = values.size();
885 if (elems_[param].data_.size() == 0)
886 elems_[param].data_.push_back(val);
888 elems_[param].data_[0]=val;
894 elems_[param].n_ = 1;
922 std::ostringstream oss;
924 if (elems_[param].data_.size() == 0)
925 elems_[param].data_.push_back(oss.str());
927 elems_[param].data_[0]=oss.str();
930 elems_[param].n_ = 1;
937 for (
size_t s = 0;s<elems_.size();s++){
939 if (elems_[s].tag_ == param)
949 for (
size_t s = 0;s<elems_.size();s++){
951 if (elems_[s].tag_ == param)
960 for (
size_t s = 0;s<elems_.size();s++){
962 if (elems_[s].tag_ == param)
971 for (
size_t s = 0;s<elems_.size();s++){
973 if (elems_[s].tag_ == param)
986 return soapstr_->str();
1010 if (!strResults_.empty()){
1011 strResults_.clear();
1015 for (
size_t x = 0;x<outputs_.size();x++)
1016 delete outputs_[x].second;
1020 soapstr_ =
new std::ostringstream();
1023 serializeMode_ =
true;
1030 xmlStream_->
setPrefix(getPrefix(nsp_),nsp_);
1060 xmlStream_->
flush();
1075 if (!strResults_.empty()){
1077 if (processResponse)
1080 m_xmlTreeProduced =
false;
1082 if( m_buildXmlTree ==
true) {
1084 std::istringstream l_respstr( strResults_);
1094 m_xmlTreeProduced =
true;
1105 logger_<<
"Couldnt connect to "<<location_;
1111 logger_<<
"A WSDL exception occurred at"<<we.
line
1112 <<
":"<<we.
col<<std::endl;
1118 logger_<<
"A Schema Parser exception occurred at "<<spe.
line
1119 <<
":"<<spe.
col<<std::endl;
1125 logger_<<
"An Xml Parsing exception occurred at row:col "<<xpe.
line
1126 <<
":"<<xpe.
col<<std::endl;
1135 std::vector<std::string> parents;
1136 return getNextInput(param, type, minimum, maximum, parents);
1141 std::vector<std::string> & parents)
1143 if (n_ < elems_.size()){
1145 param = elems_[n_].tag_;
1146 type = elems_[n_].type_;
1147 minimum = elems_[n_].min_;
1148 parents = elems_[n_].parents_;
1149 maximum = elems_[n_].max_;
1159 int & minimum,
int & maximum)
1162 std::vector<std::string> parents;
1168 int & minimum,
int & maximum,
1169 std::vector<std::string> & parents)
1173 param = elems_[h].tag_;
1174 type = elems_[h].type_;
1175 minimum = elems_[h].min_;
1176 maximum = elems_[h].max_;
1177 parents = elems_[h].parents_;
1187WsdlInvoker::processResults()
1193 std::istringstream respstr(strResults_);
1206 xpp->
getName() ==
"Envelope" &&
1217 if (elemName.getLocalName() ==
"Fault"){
1223 else if (elemName.getLocalName() ==
"Header"){
1227 else if (elemName.getLocalName() ==
"Body"){
1237 catch (WsdlException we)
1240 logger_<<
"A WSDL exception occurred while parsing the response at line "<<we.line
1241 <<
":"<<we.col<<std::endl;
1242 logger_<<we.description<<std::endl;
1244 if (xpp)
delete xpp;
1248 logger_<<
"A Schema Parser exception occurred while parsing the response at line "<<spe.
line
1249 <<
":"<<spe.
col<<std::endl;
1252 if (xpp)
delete xpp;
1256 logger_<<
"An Xml Parsing exception occurred while parsing the response at line "<<xpe.
line
1257 <<
":"<<xpe.
col<<std::endl;
1260 if (xpp)
delete xpp;
1282 curl_easy_cleanup(ctx) ;
1290 n_ = iHeaders_ = oHeaders_ = 0;
1293 for (
size_t x = 0;x<outputs_.size();x++)
1294 delete outputs_[x].second;
1297 serializeMode_ =
false;
1306 if (status_ && n_ < outputs_.size()){
1308 name = outputs_[n_].first;
1309 tc = outputs_[n_].second;
1321 for (
unsigned int i = 0 ;status_ && i <outputs_.size();i++){
1323 if ( name == outputs_[i].first)
1324 return outputs_[i].second;
1334 name = outputs_[j].first;
1335 tc = outputs_[j].second;
1348 for (
unsigned int i = 0 ;status_ && i <outputs_.size();i++){
1350 if (outputs_[i].second!=0){
1351 outputs_[i].second->rewind();
1352 void * tmp= outputs_[i].second->getValue(name,t);
1362WsdlInvoker::getAsStringFromXPath(
const std::string &p_xpath,
1364 std::vector<std::string> *p_array)
1367 if( status_ && !strResults_.empty()){
1369 if( p_xpath.empty())
1372 if( m_xmlTreeProduced ==
true) {
1374 std::vector< std::string> l_results;
1375 m_xmlDoc.
xpath( p_xpath, l_results, p_index);
1377 if( p_array == NULL) {
1379 if( l_results.empty() ==
false)
1380 return l_results[ 0];
1385 *p_array = l_results;
1390 std::vector< std::string> l_xpathList;
1392 size_t l_xpathTotalLevels = 0;
1393 bool l_matchFromRoot =
false;
1394 bool l_doubleSlashMatch =
false;
1395 size_t l_matchAllAtXPathLevel = 0;
1396 bool l_matchAttribute =
false;
1400 std::string l_tmpElementText;
1401 bool l_seenSlash =
false;
1402 for(
size_t l_i = 0; l_i < p_xpath.size(); l_i++) {
1404 if( p_xpath[ l_i] ==
'/') {
1407 if( l_seenSlash ==
false) {
1411 if( l_tmpElementText.empty() ==
false) {
1414 l_xpathList.push_back( l_tmpElementText);
1415 l_tmpElementText.clear();
1421 l_doubleSlashMatch =
true;
1422 l_matchAllAtXPathLevel = l_xpathList.size();
1425 l_seenSlash =
false;
1432 if( l_i == 1 && l_seenSlash ==
true)
1433 l_matchFromRoot =
true;
1436 l_seenSlash =
false;
1438 l_tmpElementText.append( 1, p_xpath[ l_i]);
1443 if( l_tmpElementText.empty() ==
false)
1444 l_xpathList.push_back( l_tmpElementText);
1447 l_xpathTotalLevels = l_xpathList.size();
1449 if( l_xpathList[ l_xpathTotalLevels - 1][ 0] ==
'@') {
1451 l_matchAttribute =
true;
1453 l_xpathTotalLevels--;
1458 std::istringstream respstr( strResults_);
1465 size_t l_xpathLevel = 0;
1466 size_t l_xmlLevel = 0;
1467 size_t l_failedXpathMatchAtXmlLevel = 0;
1469 bool l_textWasRetrieved =
false;
1470 std::string l_retrievedText;
1471 std::string l_xmlTagName;
1476 l_xmlPullEvent = l_xpp.nextToken();
1480 l_xmlTagName = l_xpp.getName();
1483 if( l_xmlLevel == 0 && ( l_xmlTagName ==
"Envelope" || l_xmlTagName ==
"Body"))
1492 if( l_xmlTagName == l_xpathList[ l_xpathLevel] &&
1493 ( l_failedXpathMatchAtXmlLevel == 0 ||
1494 ( l_doubleSlashMatch ==
true && l_xpathLevel >= l_matchAllAtXPathLevel))
1500 if( l_matchFromRoot ==
true)
1501 if( l_xpathLevel == 0 && l_xmlLevel != 1)
1507 if( l_xpathLevel < l_xpathTotalLevels)
1519 if( l_matchAttribute ==
false) {
1522 l_retrievedText.clear();
1526 l_xmlPullEvent = l_xpp.nextToken();
1527 l_retrievedText += l_xpp.getText();
1532 l_textWasRetrieved =
true;
1537 l_retrievedText = l_xpp.getAttributeValue(
"", l_xpathList[ l_xpathLevel].substr( 1));
1539 l_textWasRetrieved =
true;
1542 if( l_textWasRetrieved ==
true) {
1544 if( p_array == NULL)
1545 return l_retrievedText;
1548 p_array->push_back( l_retrievedText);
1553 l_textWasRetrieved =
false;
1556 else if( l_xpathLevel > 0 && l_failedXpathMatchAtXmlLevel == 0) {
1561 l_failedXpathMatchAtXmlLevel = l_xmlLevel;
1568 if( l_failedXpathMatchAtXmlLevel == l_xmlLevel) {
1569 l_failedXpathMatchAtXmlLevel = 0;
1571 else if( l_failedXpathMatchAtXmlLevel == 0) {
1572 if( l_xpathLevel > 0 && l_xpp.getName() == l_xpathList[ l_xpathLevel - 1])
1579 if( l_xmlLevel == 0)
1590 WsdlException we(
"Attempted to extract response when web service invocation did not succeed");
1600WsdlInvoker::post(
long timeout, std::string username, std::string passwd)
1602 const std::string postData = soapstr_->str();
1605 std::ofstream ofs(
"request.log",std::ios::app);
1613 std::string strCurlBuffer =
"";
1615 ctx=curl_easy_init();
1620 curl_easy_setopt( ctx , CURLOPT_URL, location_.c_str()) ;
1622 curl_easy_setopt( ctx , CURLOPT_NOPROGRESS , 1 ) ;
1624 curl_easy_setopt( ctx ,CURLOPT_TIMEOUT, timeout);
1625 curl_easy_setopt( ctx , CURLOPT_CONNECTTIMEOUT, timeout);
1629 curl_easy_setopt( ctx , CURLOPT_VERBOSE,1);
1630 curl_easy_setopt( ctx , CURLOPT_NOPROGRESS , 0 ) ;
1633 curl_easy_setopt( ctx , CURLOPT_POST , 1 );
1634 curl_easy_setopt( ctx , CURLOPT_POSTFIELDS , postData.c_str()) ;
1635 curl_slist* responseHeaders = NULL ;
1636 std::string tmp=
"SOAPAction: ";
1640 responseHeaders = curl_slist_append( responseHeaders , tmp.c_str());
1641 responseHeaders = curl_slist_append( responseHeaders ,
"Content-Type: text/xml; charset=UTF-8");
1642 responseHeaders = curl_slist_append( responseHeaders ,
"Accept: text/xml;");
1643 curl_easy_setopt( ctx , CURLOPT_HTTPHEADER , responseHeaders ) ;
1646 tmp=tmp+
"/"+VERSION;
1648 curl_easy_setopt( ctx,CURLOPT_USERAGENT,tmp.c_str());
1649 curl_easy_setopt( ctx,CURLOPT_POSTFIELDSIZE,postData.length());
1654 curl_easy_setopt(ctx,CURLOPT_PROXYUSERPWD,tmp.c_str());
1656 curl_easy_setopt(ctx, CURLOPT_WRITEDATA, &strCurlBuffer) ;
1657 curl_easy_setopt( ctx ,CURLOPT_WRITEFUNCTION,storeResults) ;
1660 curl_easy_setopt(ctx, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
1661 std::string tmp = sAuthUser +
":" + sAuthPass;
1662 curl_easy_setopt(ctx, CURLOPT_USERPWD, tmp.c_str());
1664 curl_easy_setopt(ctx, CURLOPT_COOKIEFILE,
"");
1666 res=curl_easy_perform(ctx);
1669 curl_slist_free_all( responseHeaders ) ;
1670 strResults_ = strCurlBuffer;
1674 char* sResults = (
char*)0;
1675 XmlUtils::winPost(location_,username,passwd,postData,action_,sResults);
1676 strResults_ = (sResults != (
char*)0) ? std::string(sResults) :
"";
1679 if(verbose_ && !strResults_.empty()){
1681 std::ofstream ofs(
"response.log",std::ios::app);
1703 if( p_pendingEvent ==
false) {
1704 l_xmlPullEvent = p_xmlPullParser.
nextToken();
1706 p_pendingEvent =
false;
1712 if( p_xmlNode.
empty() ==
true) {
1716 size_t l_numAttributes =
static_cast< size_t>( p_xmlPullParser.
getAttributeCount());
1717 for(
size_t l_i = 0; l_i < l_numAttributes; l_i++) {
1729 ::std::string l_tmpTxt;
1731 l_tmpTxt += p_xmlPullParser.
getText();
1732 l_xmlPullEvent = p_xmlPullParser.
nextToken();
1739 p_pendingEvent =
true;
1764 logger_ <<
"SOAP Fault Code: " << sFaultCode << std::endl;
1772 sFaultSubCode = xpp->
getText();
1773 logger_ <<
"SOAP Fault SubCode: " << sFaultSubCode << std::endl;
1785 sFaultString = xpp->
getText();
1786 logger_ <<
"SOAP Fault String: " << sFaultString << std::endl;
1797 xpp->
getName() ==
"faultcode"){
1801 logger_<<
"SOAP Fault Code: "<<sFaultCode<<std::endl;
1805 xpp->
getName() ==
"faultstring"){
1808 sFaultString = xpp->
getText();
1809 logger_<<
"SOAP Fault String: "<<sFaultString<<std::endl;
1812 xpp->
getName() ==
"faultactor"){
1816 logger_<<
"SOAP Fault Actor: "<<sFaultActor<<std::endl;
1824WsdlInvoker::processBody(
const Message* m,
1828 if (xpp->
getName() ==
"Fault") {
1852 typ.getLocalName() ==
"Array"))
1857 typeId = (
const_cast<SchemaParser*
>(sParser))->getTypeId(typ);
1862 const Part * p = m->getMessagePart(xpp->
getName ());
1872 if (sParser && typeId !=0){
1875 std::string tag = xpp->
getName();
1877 outputs_.push_back(std::pair<std::string,TypeContainer*>(tag,t));
1884 logger_<<
"Unknown element "<<xpp->
getName()<<std::endl;
1893 while (!(xpp->
getName() ==
"Body" &&
1906 logger_<<
"Unknown element "<<elemName<<std::endl;
1915 std::pair<std::string,TypeContainer*> pr(elemName.getLocalName(),t);
1916 outputs_.push_back(pr);
1920 std::cerr<<
"Unknown element "<<elemName.getLocalName()<<std::endl;
1937 std::string tag = xpp->
getName();
1949 type = (
const_cast<SchemaParser*
>(sParser))->getTypeId(elem);
1963 outputs_.push_back(std::pair<std::string,TypeContainer*>(tag,t));
1996 m_buildXmlTree = p_buildXmlTree;
2002 return m_buildXmlTree;
2043 std::ostringstream oss;
2044 oss<<host<<
":"<<port;
2050WsdlInvoker::getPrefix(
const std::string & nsp)
2055 while (i<prefixes_.size()) {
2056 if (prefixes_[i] == nsp)
2061 std::string tmp(
"ns");
2062 tmp.append(1,prefix+i);
2063 if (i == prefixes_.size())
2064 prefixes_.push_back(nsp);
2071WsdlInvoker::isSubTreeNil() {
2073 if (!serializeMode_)
2076 size_t depth = elems_[n_].parents_.size() - 1;
2077 std::string parent ;
2079 parent = elems_[n_].parents_[depth - 1 ];
2081 for (; i< elems_.size() && elems_[i].parents_.size() >= (depth + 1) &&
2082 ( depth == 0 || elems_[i].parents_[depth - 1 ] == parent );i ++){
2085 if (!elems_[i].data_[0].empty() )
2100storeResults(
void * buf,
size_t sz,
size_t nmemb,
void* userdata)
2102 char* sBuffer = (
char*) buf;
2103 std::string* strCurlBuffer = (std::string*) userdata;
2106 if (strCurlBuffer) {
2107 strCurlBuffer->append(sBuffer, sz * nmemb);
2108 result = sz * nmemb;
#define FEATURE_PROCESS_NAMESPACES
void setNamespace(std::string uri)
std::string getPrefix(void) const
std::string getNamespace(void) const
std::string getName() const
ContentModel * getContents() const
int getNumAttributes() const
const Attribute * getAttribute(const std::string &name) const
int getContentType() const
Schema::Compositor getCompositor() const
std::list< ContentHolder >::iterator ContentsIterator
std::string getName() const
std::string getTypeNamespace() const
bool getElementQualified() const
std::string getNamespace(void) const
std::string getTypeName(Schema::Type t) const
const XSDType * getType(const Qname &type, bool checkImports=true)
const SchemaParser * getImportedSchemaParser(const std::string &ns) const
bool isImported(const std::string &ns) const
const Element * getElement(const Qname &element, bool checkImports=true) const
bool isBasicType(int sType) const
TypeContainer * validate(XmlPullParser *xpp, int typeId, TypeContainer *ipTc=0)
static bool printTypeNames_
void print(std::ostream &os)
bool isValueValid() const
std::string getNamespace() const
int getBaseTypeId() const
std::string getName() const
virtual bool isSimple() const =0
Schema::ContentModelType getContentModel() const
int getServiceExtId() const
int getOpBinding(int index, const int *&bindings) const
int getOperationIndex(const Qname &name) const
int getInputBinding(int index, const int *&bindings) const
Part::PartRefType getPartRefType(const std::string &nam) const
std::vector< Operation * >::const_iterator cOpIterator
const Message * getMessage(WsdlPull::MessageType type) const
const PortType * portType() const
const Binding * binding(const std::string &nsp) const
int getOperationIndex(const Qname &name) const
std::list< PortType * >::const_iterator cPortTypeIterator
bool getServiceLocation(int elemId, std::string &location)
void getSoapOperationInfo(int elemId, std::string &soapAction, Soap::Style &style)
std::string getEncodingUri(void) const
void getSoapBodyInfo(int elemId, std::string &ns, Soap::Encoding &use, std::string &encodingStyle)
void getSoapHeaderInfo(int elemId, std::string &ns, int &partId, const Message *&m)
bool isSoapHeader(int id)
static const std::string soapBindingUri11
std::string getEnvelopeUri(void) const
std::string getNamespace() const
static const std::string soapBindingUri12
SoapVersion getSoapVersion() const
std::string getName() const
bool setInputValue(const int param, void *val)
void * getValue(const std::string ¶m, Schema::Type &t)
bool setValue(const std::string ¶m, void *val)
sets the param value for an operation by name of the parameter
int getOperations(std::vector< std::string > &operations)
return names of operations (only for the SOAP binding portType)
void buildXmlTree(XmlPullParser &p_xmlPullParser, XmlNode_t &p_xmlNode, bool p_notScannedEventAvail=false)
TypeContainer * getOutput(const std::string &name)
void setCredentials(const std::string &user, const std::string &pass)
bool getBuildXmlTree(void) const
bool getNextOutput(std::string &name, TypeContainer *&tc)
void setAuth(const std::string &user, const std::string &pass)
bool getLazyRelativeMatch(void) const
void setProxy(const std::string &host, int port=80)
void printTypeNames(bool f)
int getNextHeaderInput(std::string ¶m, Schema::Type &type, int &minimum, int &maximum)
int getNextInput(std::string ¶m, Schema::Type &type, int &minimum, int &maximum)
void setProcessEnvAndBody(bool p_processEnvAndBody)
std::string getDocumentation()
bool invoke(long timeout=0, bool processResponse=true)
void setBuildXmlTree(bool p_buildXmlTree)
bool getNextHeaderOutput(std::string &name, TypeContainer *&tc)
std::string getXMLResponse()
bool getProcessEnvAndBody(void) const
std::string getOpDocumentation(const std::string &n)
void setLazyRelativeMatch(bool p_lazyRelativeMatch)
std::string getSoapMessage()
std::string getServiceEndPoint(const std::string &opname)
bool setOperation(const std::string &operation, WsdlPull::MessageType mType=WsdlPull::Input)
set the operation to invoke
WsdlExtension * getExtensibilityHandler(const std::string &ns)
const std::string * getDocumentation()
std::string getNamespace(void)
const SchemaParser * getSchemaParser(std::string targetNamespace) const
bool getPortTypes(PortType::cPortTypeIterator &begin, PortType::cPortTypeIterator &end) const
void setLazyRelativeMatch(bool p_lazyRelativeMatch)
void setProcessEnvAndBody(bool p_processEnvAndBody)
bool getLazyRelativeMatch(void) const
XmlNode_t & getRootNode(void)
bool getProcessEnvAndBody(void) const
bool xpath(const std::string &p_xpath, std::vector< std::string > &p_results, size_t p_index=0)
void setText(const std::string &p_text)
void addAttribute(const std::string &p_name, const std::string &p_value)
XmlNode_t & addNode(XmlNode_t *p_xmlNode=NULL)
void setName(const std::string &p_name, bool p_empty=XmlNode_t::EMPTY_NODE)
void require(int type, std::string ns, std::string name)
std::string getNamespace(std::string prefix)
std::string getAttributeValue(int index)
std::string getAttributeName(int index)
void setFeature(std::string feature, bool value)
XmlSerializer & startTag(std::string nsp, std::string name)
XmlSerializer & text(std::string txt)
void setPrefix(std::string prefix, std::string nsp)
void startDocument(std::string encoding, bool standalone)
XmlSerializer & attribute(std::string nsp, std::string name, std::string value)
XmlSerializer & endTag(std::string nsp, std::string name)
const std::string SchemaUri
const std::string SchemaInstaceUri
bool WSDLPULL_EXPORT getProxy()
std::string WSDLPULL_EXPORT getProxyHost()
void WSDLPULL_EXPORT setProxyPass(const std::string &sProxyPass)
void WSDLPULL_EXPORT setProxy(const bool bProxy)
std::string WSDLPULL_EXPORT getProxyUser()
void WSDLPULL_EXPORT setProxyUser(const std::string &sProxyUser)
std::string WSDLPULL_EXPORT getProxyPass()
void WSDLPULL_EXPORT setProxyHost(const std::string &sProxyHost)
std::ostream & dbsp(std::ostream &str)