diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/csoap/Makefile.am | 17 | ||||
-rw-r--r-- | examples/csoap/simpleclient.c | 56 | ||||
-rw-r--r-- | examples/csoap/simpleserver.c | 95 |
3 files changed, 168 insertions, 0 deletions
diff --git a/examples/csoap/Makefile.am b/examples/csoap/Makefile.am new file mode 100644 index 0000000..bb62213 --- /dev/null +++ b/examples/csoap/Makefile.am @@ -0,0 +1,17 @@ +bin_PROGRAMS=simpleclient simpleserver + +INCLUDES=-I$(top_srcdir)/ $(LIBXML_CFLAGS) +LDFLAGS=-L$(top_builddir)/nanohttp -lnanohttp-$(GENERIC_API_VERSION) \ + $(LIBSOCKET) $(LIBNSL) -lpthread\ + -L$(top_builddir)/libcsoap/ -lcsoap-$(GENERIC_API_VERSION) \ + $(LIBXML_LIBS) + +simpleclient_SOURCES=simpleclient.c +simpleclient_LDFLAGS=$(LDFLAGS) + +simpleserver_SOURCES=simpleserver.c +simpleserver_LDFLAGS=$(LDFLAGS) + + + + diff --git a/examples/csoap/simpleclient.c b/examples/csoap/simpleclient.c new file mode 100644 index 0000000..4d08c5c --- /dev/null +++ b/examples/csoap/simpleclient.c @@ -0,0 +1,56 @@ +/****************************************************************** + * $Id: simpleclient.c,v 1.1 2004/02/03 08:58:34 snowdrop 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 <libcsoap/soap-client.h> + + +static const char *url = "http://csoap.sourceforge.net/cgi-bin/csoapserver"; +static const char *urn = "urn:examples"; +static const char *method = "sayHello"; + + +int main(int argc, char *argv[]) +{ + SoapEnv *env, *res; + xmlDocPtr doc; + + log_set_level(HLOG_INFO); + + 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, ""); + soap_xml_doc_print(res->root->doc); + soap_env_free(res); + soap_env_free(env); + + return 0; +} + + + + + diff --git a/examples/csoap/simpleserver.c b/examples/csoap/simpleserver.c new file mode 100644 index 0000000..ecdc060 --- /dev/null +++ b/examples/csoap/simpleserver.c @@ -0,0 +1,95 @@ +/****************************************************************** + * $Id: simpleserver.c,v 1.1 2004/02/03 08:58:34 snowdrop 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 <libcsoap/soap-server.h> + + +static const char *url = "/csoapserver"; +static const char *urn = "urn:examples"; +static const char *method = "sayHello"; + + +void add_name(xmlNodePtr node, SoapEnv *env) +{ + char *name; + name = (char*)xmlNodeListGetString(node->doc, + node->xmlChildrenNode, 1); + + + if (!name) return; + + soap_env_add_itemf(env,"xsd:string", "echo", + "Hello '%s'", name); + + xmlFree((xmlChar*)name); + +} + + +SoapEnv* say_hello(SoapEnv *request) +{ + + SoapEnv *env; + xmlNodePtr method, node; + + env = soap_env_new_with_response(request); + + method = soap_env_get_method(request); + node = soap_xml_get_children(method); + + while (node) { + add_name(node, env); + node = soap_xml_get_next(node); + } + + return env; +} + + +int main(int argc, char *argv[]) +{ + + SoapRouter *router; + + log_set_level(HLOG_INFO); + + if (!soap_server_init_args(argc, argv)) { + return 0; + } + + router = soap_router_new(); + soap_router_register_service(router, say_hello, method, urn); + soap_server_register_router(router, url); + + soap_server_run(); + + soap_router_free(router); + soap_server_destroy(); + + return 0; +} + + + + + |