| /* |
| |
| 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; |
| } |