{"id":51,"date":"2011-08-11T11:04:01","date_gmt":"2011-08-11T11:04:01","guid":{"rendered":"http:\/\/www.uturtle.com\/blog\/archives\/51"},"modified":"2013-12-17T02:42:58","modified_gmt":"2013-12-16T17:42:58","slug":"gsoap-%ea%b0%84%eb%8b%a8%ed%95%9c-soap-client-%ec%a0%9c%ec%9e%91","status":"publish","type":"post","link":"https:\/\/www.jinukbaek.com\/blog\/ko\/archives\/51","title":{"rendered":"gSOAP \uac04\ub2e8\ud55c SOAP Client \uc81c\uc791"},"content":{"rendered":"<p>\ubcf8 \ubb38\uc11c\ub294 gSOAP User Guide[1]\ub97c \uae30\ubc18\uc73c\ub85c \ud574\uc11c \uc791\uc131\ud558\uc600\uc74c.<\/p>\n<p>&#8211; \uac04\ub2e8\ud55c SOAP Client \uc81c\uc791<\/p>\n<p>http:\/\/www.genivia.com\/calc.wsdl \uc5d0 \uc788\ub294 SOAP Provider\ub85c \ubd80\ud130 Stub\uc744 \uc791\uc131\ud558\uc5ec C++ \uae30\ubc18\uc73c\ub85c \uc791\uc131\ud558\uc600\uc74c.<br \/>\ncalc \uc11c\ube44\uc2a4\ub294 \uac04\ub2e8\ud788 double Type\uc758 \ub450\uac1c\uc758 \ub9e4\uac1c\ubcc0\uc218\ub97c \ubc1b\uc544 \ub367\uc148, \uacf1\uc148 \ub4f1 \uacc4\uc0b0\uc744 \ud558\uc5ec double Type\uc758 \uacc4\uc0b0 \uacb0\uacfc\ub97c \ub9ac\ud134\ud558\ub294 \uc11c\ube44\uc2a4\uc774\ub2e4.<\/p>\n<p>1. &#8216;.h \ud5e4\ub354 \ud30c\uc77c&#8217; \uc0dd\uc131<br \/>\n(1) C++ without STL ( -s \uc635\uc158\uc5d0 \uc758\ud574 STL\uc774 \ube60\uc9d0)<br \/>\n&gt; wsdl2h -s -o calc.h http:\/\/www.genivia.com\/calc.wsdl<\/p>\n<p>(2) Pure C Application (-c \uc635\uc158)<br \/>\n&gt; wsdl2h -c -o calc.h http:\/\/www.genivia.com\/calc.wsdl<\/p>\n<p>2. \ud5e4\ub354 \ud30c\uc77c\uc744 \ud1b5\ud574 C\/C++ API\ub97c \uc0dd\uc131<br \/>\n(1) C++<br \/>\n&gt; soapcpp2 -i -C -I&lt;import&gt; calc.h<br \/>\n\uc5ec\uae30\uc11c &#8216;&lt;import&gt;&#8217;\ub294 ~\/gsoap-2.8\/gsoap\/import \uacbd\ub85c\ub97c \uc785\ub825<br \/>\n&#8211; &#8216;-C&#8217;\uc635\uc158\uc740 Client \ucf54\ub4dc\ub9cc \uc0dd\uc131<\/p>\n<p>(2) C<br \/>\n&gt; soapcpp2 -c -C -I&lt;import&gt; calc.h<\/p>\n<p>3. \uc2e4\uc81c \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud574\ubcf4\ub294 \uc608\uc81c \ucf54\ub4dc<br \/>\n1) cpp \ucf54\ub4dc\u00a0 (\uc608\ub97c\ub4e4\uc5b4 main.cpp)<\/p>\n<div class=\"txc-textbox\" style=\"background-color: #eeeeee; border-width: 1px; border-color: #eeeeee; border-style: solid; padding: 10px;\">\n<p style=\"margin: 0px;\">\n<p style=\"margin: 0px;\">#include &#8220;soapcalcProxy.h&#8221;<\/p>\n<p style=\"margin: 0px;\">#include &#8220;calc.nsmap&#8221;<\/p>\n<p style=\"margin: 0px;\">int main()<\/p>\n<p style=\"margin: 0px;\">{<\/p>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">calcProxy service;<\/p>\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">double result;<\/p>\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">if (service.add(1.0, 2.0, result) == SOAP OK)<\/p>\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 12em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">std::cout &lt;&lt; &#8220;The sum of 1.0 and 2.0 is &#8221; &lt;&lt; result &lt;&lt; std::endl;<\/p>\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">else<\/p>\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 12em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">service.soap_stream_fault(std::cerr);<\/p>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">return 0;<\/p>\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px;\">}<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<p>2) C \ucf54\ub4dc (\uc608\ub97c\ub4e4\uc5b4 main.c)<\/p>\n<div class=\"txc-textbox\" style=\"background-color: #eeeeee; border-width: 1px; border-color: #eeeeee; border-style: solid; padding: 10px;\">\n<p style=\"margin: 0px;\">\n<p style=\"margin: 0px;\">#include &#8220;soapH.h&#8221;<\/p>\n<p style=\"margin: 0px;\">#include &#8220;calc.nsmap&#8221;<\/p>\n<p style=\"margin: 0px;\">int main()<\/p>\n<p style=\"margin: 0px;\">{<\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">struct soap *soap = soap_new();<\/p>\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-left: 4em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">double result;<\/p>\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-left: 4em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">if (soap_call_ns2__add(soap, NULL, NULL, 1.0, 2.0, &amp;result) == SOAP_OK)<\/p>\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-left: 4em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 12em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">printf(&#8220;The sum of 1.0 and 2.0 is %lg\\n&#8221;, result);<\/p>\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-left: 4em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">else<\/p>\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-left: 4em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 12em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">soap_print_fault(soap, stderr);<\/p>\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-left: 4em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">soap_end(soap);<\/p>\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-left: 4em;\">\n<div style=\"margin-left: 4em;\"><\/div>\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 8em;\">\n<p style=\"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 4em;\">soap_free(soap);<\/p>\n<p>return 0;<\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin: 0px;\">\n<p style=\"margin: 0px;\">}<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<p>4. \ucef4\ud30c\uc77c<br \/>\n1) c++<br \/>\n&gt; g++ ~\/gsoap-2.8\/gsoap\/stdsoap2.cpp main.cpp soapC.cpp soapcalcProxy.cpp<\/p>\n<p>2) c<br \/>\n&gt; gcc ~\/gsoap-2.8\/gsoap\/stdsoap2.c main.c soapC.c soapClient.c<\/p>\n<p>5. \uc2e4\ud589\ud574\uc11c \uc798 \ub418\ub294\uc9c0 \ud655\uc778\ud558\uae30<\/p>\n<p>[1] Robert van Engelen, &#8220;gSOAP 2.8.3 User Guide&#8221;, GENIVIA INC, June 24, 2011, p8~11<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ubcf8 \ubb38\uc11c\ub294 gSOAP User Guide[1]\ub97c \uae30\ubc18\uc73c\ub85c \ud574\uc11c \uc791\uc131\ud558\uc600\uc74c. &#8211; \uac04\ub2e8\ud55c SOAP Client \uc81c\uc791 http:\/\/www.genivia.com\/calc.wsdl \uc5d0 \uc788\ub294 SOAP Provider\ub85c<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[44],"tags":[118],"class_list":["post-51","post","type-post","status-publish","format-standard","hentry","category-computer-etc","tag-gsoap-ko"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8gT1J-P","_links":{"self":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts\/51","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/comments?post=51"}],"version-history":[{"count":2,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":258,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/posts\/51\/revisions\/258"}],"wp:attachment":[{"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/media?parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/categories?post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jinukbaek.com\/blog\/wp-json\/wp\/v2\/tags?post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}