blob: c47524411ee1e5e76970043029042a21115a7208 [file] [log] [blame]
/*
udpclient.c
SOAP-over-UDP demo client
--------------------------------------------------------------------------------
gSOAP XML Web services tools
Copyright (C) 2001-2004, Robert van Engelen, Genivia, Inc. All Rights Reserved.
This software is released under one of the following two licenses:
GPL or Genivia's license for commercial use.
--------------------------------------------------------------------------------
GPL license.
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, MA 02111-1307 USA
Author contact information:
engelen@genivia.com / engelen@acm.org
--------------------------------------------------------------------------------
A commercial use license is available from Genivia, Inc., contact@genivia.com
--------------------------------------------------------------------------------
*/
#include "soapH.h"
#include "udp.nsmap"
int main(int argc, char **argv)
{ struct soap soap;
struct SOAP_ENV__Header header;
struct wsa__EndpointReferenceType replyTo;
char *res;
char *mid1 = "id1";
char *mid2 = "id2";
if (argc > 1)
mid1 = argv[1];
if (argc > 2)
mid2 = argv[2];
soap_init(&soap);
soap.send_timeout = 1;
soap.recv_timeout = 1;
/* To compress the request message (compile with -DWITH_GZIP):
soap_set_omode(&soap, SOAP_ENC_ZLIB);
*/
/* To transmit DIME attachments:
soap_set_dime(&soap);
soap_set_dime_attachment(&soap, "abc", 3, "cid:abc", "text/xml", 0, NULL);
*/
/* To transmit MIME attachments:
soap_set_mime(&soap, NULL, NULL);
soap_set_mime_attachment(&soap, "abc", 3, SOAP_MIME_7BIT, "text/xml", "cid:abc", NULL, NULL);
*/
/* Prepare SOAP Header */
soap_default_SOAP_ENV__Header(&soap, &header);
soap.header = &header;
soap_default_wsa__EndpointReferenceType(&soap, &replyTo);
replyTo.Address = "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
/* Set WS-Addressing elements for request-response unicast */
header.wsa__MessageID = mid1;
header.wsa__To = "http://genivia.com/udp/server";
header.wsa__Action = "http://genivia.com/udp/echoString";
header.wsa__ReplyTo = &replyTo;
/* Make request-response call */
if (soap_call_ns__echoString(&soap, NULL, NULL, "hello world!", &res))
{ if (soap.error == SOAP_EOF && soap.errnum == 0)
printf("Timeout: message probably already delivered\n");
else
soap_print_fault(&soap, stderr);
}
else
printf("UDP server response: %s\n", res);
/* Reset the SOAP Header */
soap_default_SOAP_ENV__Header(&soap, &header);
soap.header = &header;
/* Set WS-Addressing elements for one-way unicast */
header.wsa__MessageID = mid2;
header.wsa__To = "http://genivia.com/udp/server";
header.wsa__Action = "http://genivia.com/udp/sendString";
/* Send one-way message */
if (soap_send_ns__sendString(&soap, NULL, NULL, "hello world!"))
soap_print_fault(&soap, stderr);
soap_end(&soap);
soap_done(&soap);
return 0;
}