|
OpenSOAP Project The Middleware as Platform for IT Application Services | |
メニュー
-トップ |
HelloService.c
/*-----------------------------------------------------------------------------
* $RCSfile: HelloService.c,v $
*
* See Copyright for the status of this software.
*
* The OpenSOAP Project
* http://opensoap.jp/
*-----------------------------------------------------------------------------
*/
#include <OpenSOAP/OpenSOAP.h>
#include <OpenSOAP/Service.h>
#include <stdio.h>
#include <string.h>
#if !defined(CONNECT_TYPE)
# define CONNECT_TYPE "stdio"
#endif /* CONNECT_TYPE */
static
int
ServiceFunc(OpenSOAPEnvelopePtr request,
OpenSOAPEnvelopePtr *response,
void *opt) {
OpenSOAPBlockPtr body = NULL;
OpenSOAPStringPtr myName = NULL;
size_t myNameLen = 0;
char *myNameString = NULL;
static char noNameString[] = "who are you?";
OpenSOAPStringPtr reply = NULL;
size_t replyLen = 64;
char *replyString = NULL;
/* parse request message */
OpenSOAPEnvelopeGetBodyBlockMB(request, "Hello", &body);
OpenSOAPBlockGetChildValueMB(body, "MyName", "string", &myName);
OpenSOAPStringGetLengthMB(myName, &myNameLen);
if (myNameLen == 0) {
myNameString = malloc(strlen(noNameString) + 1);
strcpy(myNameString, noNameString);
}
else {
myNameString = malloc(myNameLen + 1);
OpenSOAPStringGetStringMB(myName, &myNameLen, myNameString);
}
fprintf(stderr, "HelloService: my name = %s\n", myNameString);
/* make response */
OpenSOAPEnvelopeCreateMB("1.1", NULL, response);
OpenSOAPEnvelopeAddBodyBlockMB(*response, "HelloResponse", &body);
OpenSOAPBlockSetNamespaceMB(body,
"http://services.opensoap.jp/samples/Hello/",
"m");
replyString = malloc(replyLen + 1);
sprintf(replyString, "Hello, %s!", myNameString);
fprintf(stderr, "HelloService: reply = %s\n", replyString);
OpenSOAPStringCreateWithMB(replyString, &reply);
OpenSOAPBlockSetChildValueMB(body, "Reply", "string", &reply);
free(myNameString);
free(replyString);
return 0;
}
int
main(void) {
OpenSOAPServicePtr service = NULL;
OpenSOAPInitialize(NULL);
OpenSOAPServiceCreateMB(&service, "HelloService", CONNECT_TYPE, 0);
OpenSOAPServiceRegisterMB(service, "Hello", ServiceFunc, NULL);
OpenSOAPServiceRun(service);
OpenSOAPServiceRelease(service);
OpenSOAPUltimate();
return 0;
}
Copyright (C) 2001-2004 Webmasters of www.opensoap.jp. All
Rights Reserved.
ご利用の際は 免責・著作権情報をご覧ください. |
|