OpenSOAP Project The Middleware as Platform for IT Application Services | ||
メニュー
-トップ |
HelloClient.c/*----------------------------------------------------------------------------- * $RCSfile: HelloClient.c,v $ * * See Copyright for the status of this software. * * The OpenSOAP Project * http://opensoap.jp/ *----------------------------------------------------------------------------- */ #include <SOAP/OpenSOAP.h> #include <SOAP/Transport.h> #include <stdio.h> static void PrintEnvelope(OpenSOAPEnvelopePtr env, const char *label) { OpenSOAPByteArrayPtr envBuf = NULL; const unsigned char *envBeg = NULL; size_t envSz = 0; OpenSOAPByteArrayCreate(&envBuf); OpenSOAPEnvelopeGetCharEncodingString(env, NULL, envBuf); OpenSOAPByteArrayGetBeginSizeConst(envBuf, &envBeg, &envSz); fprintf(stderr, "\n=== %s envelope begin ===\n", label); fwrite(envBeg, 1, envSz, stderr); fprintf(stderr, "\n=== %s envelope end ===\n", label); OpenSOAPByteArrayRelease(envBuf); } int main(int argc, char **argv) { OpenSOAPEnvelopePtr request = NULL; OpenSOAPEnvelopePtr response = NULL; OpenSOAPBlockPtr body = NULL; OpenSOAPTransportPtr transport = NULL; OpenSOAPStringPtr myName = NULL; OpenSOAPStringPtr reply = NULL; size_t replyLen = 0; char *replyString = NULL; /* initialize client */ OpenSOAPInitialize(NULL); /* create request message */ OpenSOAPEnvelopeCreateMB("1.1", NULL, &request); OpenSOAPEnvelopeAddBodyBlockMB(request, "Hello", &body); OpenSOAPBlockSetNamespaceMB(body, "http://services.opensoap.jp/samples/Hello/", "m"); OpenSOAPStringCreateWithMB(argv[1], &myName); OpenSOAPBlockSetChildValueMB(body, "MyName", "string", &myName); PrintEnvelope(request, "request"); /* invoke service */ OpenSOAPTransportCreate(&transport); #if 0 /* direct client-service connect (using HelloService.cgi) */ OpenSOAPTransportSetURL(transport, "http://localhost/cgi-bin/HelloService.cgi"); #else /* via OpenSOAP server (using HelloService)*/ OpenSOAPTransportSetURL(transport, "http://localhost/cgi-bin/soapInterface.cgi"); #endif OpenSOAPTransportInvoke(transport, request, &response); OpenSOAPTransportRelease(transport); PrintEnvelope(response, "response"); OpenSOAPStringRelease(myName); /* parse response message */ OpenSOAPStringCreate(&reply); OpenSOAPEnvelopeGetBodyBlockMB(response, "HelloResponse", &body); OpenSOAPBlockGetChildValueMB(body, "Reply", "string", &reply); OpenSOAPStringGetLengthMB(reply, &replyLen); replyString = malloc(replyLen + 1); OpenSOAPStringGetStringMB(reply, &replyLen, replyString); fprintf(stderr, "\nreply: %s\n\n", replyString); free(replyString); OpenSOAPStringRelease(reply); /* finalize client */ OpenSOAPEnvelopeRelease(response); OpenSOAPEnvelopeRelease(request); OpenSOAPUltimate(); return 0; } Copyright (C) 2001-2004 Webmasters of www.opensoap.jp. All
Rights Reserved.
ご利用の際は 免責・著作権情報をご覧ください. |