From 06694fd4006c6ab76f7902a95cc5623a3649b01e Mon Sep 17 00:00:00 2001 From: rans Date: Thu, 26 Aug 2004 17:00:18 +0000 Subject: CSoap Client --- examples/csoap/csoap.cpp | 113 ++++++++++++++++++++++++++++++ examples/csoap/csoap.vcproj | 162 ++++++++++++++++++++++++++++++++++++++++++++ examples/csoap/iconv.dll | Bin 0 -> 888832 bytes examples/csoap/libxml2.dll | Bin 0 -> 780288 bytes examples/csoap/stdafx.cpp | 8 +++ examples/csoap/stdafx.h | 12 ++++ 6 files changed, 295 insertions(+) create mode 100644 examples/csoap/csoap.cpp create mode 100644 examples/csoap/csoap.vcproj create mode 100644 examples/csoap/iconv.dll create mode 100644 examples/csoap/libxml2.dll create mode 100644 examples/csoap/stdafx.cpp create mode 100644 examples/csoap/stdafx.h diff --git a/examples/csoap/csoap.cpp b/examples/csoap/csoap.cpp new file mode 100644 index 0000000..289d77a --- /dev/null +++ b/examples/csoap/csoap.cpp @@ -0,0 +1,113 @@ +// csoap.cpp : Defines the entry point for the console application. +// + +/****************************************************************** +* $Id: csoap.cpp,v 1.1 2004/08/26 17:00:18 rans Exp $ +* +* CSOAP Project: CSOAP examples project +* Copyright (C) 2003 Ferhat Ayaz +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA02111-1307USA +* +* Email: ayaz@jprogrammer.net +******************************************************************/ + +#include "stdafx.h" + +#include + +//static const char *url = "http://csoap.sourceforge.net/cgi-bin/csoapserver"; + +static const char *url = "http://localhost:10000/csoapserver"; +static const char *urn = "urn:examples"; +static const char *method = "sayHello"; + +/** +* print_xpath_nodes: +* @nodes: the nodes set. +* @output: the output file handle. +* +* Prints the @nodes content to @output. +*/ +void print_xpath_nodes(xmlNodeSetPtr nodes, FILE* output) { + xmlNodePtr cur; + int size; + int i; + + size = (nodes) ? nodes->nodeNr : 0; + + fprintf(output, "Result (%d nodes):\n", size); + for(i = 0; i < size; ++i) { + if(nodes->nodeTab[i]->type == XML_NAMESPACE_DECL) { + xmlNsPtr ns; + + ns = (xmlNsPtr)nodes->nodeTab[i]; + cur = (xmlNodePtr)ns->next; + if(cur->ns) { + fprintf(output, "= namespace \"%s\"=\"%s\" for node %s:%s\n", + ns->prefix, ns->href, cur->ns->href, cur->name); + } else { + fprintf(output, "= namespace \"%s\"=\"%s\" for node %s\n", + ns->prefix, ns->href, cur->name); + } + } else if(nodes->nodeTab[i]->type == XML_ELEMENT_NODE) { + cur = nodes->nodeTab[i]; + if(cur->ns) { + fprintf(output, "= element node \"%s:%s\"\n", + cur->ns->href, cur->name); + } else { + fprintf(output, "= element node \"%s\"\n", + cur->name); + } + } else { + cur = nodes->nodeTab[i]; + fprintf(output, "= node \"%s\": type %d\n", cur->name, cur->type); + } + } +} + +int _tmain(int argc, _TCHAR* argv[]) +{ + SoapEnv *env, *res; + xmlXPathObjectPtr xpathObj; +// const char xpathExpr[]="//*"; + const char xpathExpr[]="//Envelope/*"; + log_set_level(HLOG_VERBOSE); + + env = soap_env_new_with_method(urn, method); + soap_env_add_item(env, "xsd:string", "name", "Jonny B. Good"); + + if (argc > 1) + res = soap_client_invoke(env, argv[1], ""); + else + res = soap_client_invoke(env, url, ""); + + xpathObj = soap_xpath_eval(res->root->doc,xpathExpr); + soap_env_get_body(env); + if(xpathObj!=NULL) + { + print_xpath_nodes(xpathObj->nodesetval, stdout); + } + soap_xml_doc_print(res->root->doc); + + soap_env_free(res); + soap_env_free(env); + xmlXPathFreeObject(xpathObj); + + printf("Press ENTER to Continue"); + char c; + gets(&c); + return 0; +} \ No newline at end of file diff --git a/examples/csoap/csoap.vcproj b/examples/csoap/csoap.vcproj new file mode 100644 index 0000000..3d758d8 --- /dev/null +++ b/examples/csoap/csoap.vcproj @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/csoap/iconv.dll b/examples/csoap/iconv.dll new file mode 100644 index 0000000..b448e7d Binary files /dev/null and b/examples/csoap/iconv.dll differ diff --git a/examples/csoap/libxml2.dll b/examples/csoap/libxml2.dll new file mode 100644 index 0000000..410c208 Binary files /dev/null and b/examples/csoap/libxml2.dll differ diff --git a/examples/csoap/stdafx.cpp b/examples/csoap/stdafx.cpp new file mode 100644 index 0000000..b51f75e --- /dev/null +++ b/examples/csoap/stdafx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// csoap.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/examples/csoap/stdafx.h b/examples/csoap/stdafx.h new file mode 100644 index 0000000..f9aca9b --- /dev/null +++ b/examples/csoap/stdafx.h @@ -0,0 +1,12 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + + +#include +#include + +// TODO: reference additional headers your program requires here -- cgit v1.1-32-gdbae