<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>DominixZ : Live Smart &#38; Geeky &#187; web service</title> <atom:link href="http://www.dominixz.com/blog/tag/web-service/feed/" rel="self" type="application/rss+xml" /><link>http://www.dominixz.com/blog</link> <description>Productivity , Techology News ,Website Review , Web Standard , Live Smart and Geeky</description> <lastBuildDate>Wed, 08 Feb 2012 16:59:00 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>PHP เรียกใช้ Web Service ของ .NET ด้วยการส่งและรับ Object</title><link>http://www.dominixz.com/blog/programming-solution/php-call-dot-net-webservice-that-require-object-param/</link> <comments>http://www.dominixz.com/blog/programming-solution/php-call-dot-net-webservice-that-require-object-param/#comments</comments> <pubDate>Fri, 12 Sep 2008 07:40:44 +0000</pubDate> <dc:creator>DominixZ</dc:creator> <category><![CDATA[วิธีแก้ปัญหาเขียนโปรแกรม]]></category> <category><![CDATA[.net]]></category> <category><![CDATA[c#]]></category> <category><![CDATA[php]]></category> <category><![CDATA[web service]]></category><guid
isPermaLink="false">http://www.dominixz.com/blog/?p=436</guid> <description><![CDATA[จากเมื่อวานที่ผมได้รับมาตอนเย็น ให้ทำให้ PHP เรียก Web Service ของ .NET แล้วตามทฤษฎีนั้นเรียกได้อยู่แล้ว แต่คราวนี้ผมต้องมาลงมือจริงๆทำจริง โดยผมได้ลองทำ Web Service ของ .NET ต้องขอบอกว่าง่ายมากๆใช้เวลาเพียงแปป เดียวเท่านั้น (อันนี้ขอข้ามนะ) เสร็จแล้วมาถึงวิธีเีรียก คราวนี้และปัญหาซึ่งบทความใน Internet ไม่มีอันไหนโดนตรงใจผมสักอัน ลองถามใน Twitter ก็มีแต่คุณ pittaya ตอบมาแล้วบอกให้เชื่อมต่อผ่าน JSON แต่.. ผมลืมบอกเขาไปว่ามันเป็น SOAP เพราะตาม requirement แล้วผมจำเป็นต้องใช้ SOAP ดังนั้นพี่เขาก็เลยบอกให้ลอง nusoap ครับแต่ทว่า&#8230; ผมกำลังคิดในใจ (ไม่ได้บอกพี่เขา) ว่า NuSOAP มันไม่เก่าไปแล้วหรอ มันมี Library ให้เรียกใช้ทำไมต้องไปใช้ NuSOAP ??? ดังนั้นเพื่อตอบสนอง Need ของตัวเองผมเลยพยายามค้นหาวิธีโดยไม่ใช้ NuSOAP แล้วผมก็ทำได้ครับ อันนี้ใช้ Library [...]]]></description> <content:encoded><![CDATA[<p>จากเมื่อวานที่ผมได้รับมาตอนเย็น ให้ทำให้ PHP เรียก Web Service ของ .NET แล้วตามทฤษฎีนั้นเรียกได้อยู่แล้ว แต่คราวนี้ผมต้องมาลงมือจริงๆทำจริง โดยผมได้ลองทำ Web Service ของ .NET ต้องขอบอกว่าง่ายมากๆใช้เวลาเพียงแปป เดียวเท่านั้น (อันนี้ขอข้ามนะ) เสร็จแล้วมาถึงวิธีเีรียก คราวนี้และปัญหาซึ่งบทความใน Internet ไม่มีอันไหนโดนตรงใจผมสักอัน ลองถามใน Twitter ก็มีแต่คุณ pittaya ตอบมาแล้วบอกให้เชื่อมต่อผ่าน JSON แต่.. ผมลืมบอกเขาไปว่ามันเป็น SOAP เพราะตาม requirement แล้วผมจำเป็นต้องใช้ SOAP ดังนั้นพี่เขาก็เลยบอกให้ลอง nusoap ครับแต่ทว่า&#8230; ผมกำลังคิดในใจ (ไม่ได้บอกพี่เขา) ว่า NuSOAP มันไม่เก่าไปแล้วหรอ มันมี Library ให้เรียกใช้ทำไมต้องไปใช้ NuSOAP ???</p><p>ดังนั้นเพื่อตอบสนอง Need ของตัวเองผมเลยพยายามค้นหาวิธีโดยไม่ใช้ NuSOAP แล้วผมก็ทำได้ครับ อันนี้ใช้ Library ที่ติดมาใน PHP เลยครับ โดยขั้นตอนแรกต้องไปเอา comment ของ php_soap.dll ออกจาก php.ini ก่อนครับโดยถ้าใครใช้ AppServ ก็จะอยู่ใน WINDOWS\php.ini แล้วก็เปลี่ยนจาก ;php_soap.dll เป็น php_soap.dll เอา ; ออกนั้นเอง เสร็จแล้วมาเริ่มกันเลยครับ</p><p>&lt;s:element name=&#8221;sendObject&#8221;&gt;<br
/> &lt;s:complexType&gt;<br
/> &lt;s:sequence&gt;<br
/> &lt;s:element minOccurs=&#8221;0&#8243; maxOccurs=&#8221;1&#8243; name=&#8221;gc&#8221; type=&#8221;tns:GuestCounts&#8221;/&gt;<br
/> &lt;/s:sequence&gt;<br
/> &lt;/s:complexType&gt;<br
/> &lt;/s:element&gt;</p><p
style="text-align: center;"><strong>Complex Type 1.0</strong></p><p>&lt;s:complexType name=&#8221;GuestCounts&#8221;&gt;<br
/> &lt;s:sequence&gt;<br
/> &lt;s:element minOccurs=&#8221;1&#8243; maxOccurs=&#8221;1&#8243; name=&#8221;AgeQualifyingCode&#8221; type=&#8221;s:int&#8221;/&gt;<br
/> &lt;s:element minOccurs=&#8221;1&#8243; maxOccurs=&#8221;1&#8243; name=&#8221;Count&#8221; type=&#8221;s:int&#8221;/&gt;<br
/> &lt;/s:sequence&gt;<br
/> &lt;/s:complexType&gt;</p><p
style="text-align: center;"><strong>Complex Type 1.1</strong></p><p
style="text-align: center;"><strong>อันนี้เป็น Complex Type นะครับคืออะไรลองศึกษากันเองครับ</strong></p><p>$client = new SoapClient(&#8220;http://localhost/HotelService.asmx?WSDL&#8221;);<br
/> $wrapper-&gt;gc-&gt;Count = 10;<br
/> $wrapper-&gt;gc-&gt;AgeQualifyingCode = 50;<br
/> $params = new SoapParam($wrapper, &#8220;sendObject&#8221;);<br
/> var_dump($client-&gt;sendObject($params));</p><p
style="text-align: center;"><strong>อันนี้คือส่วน Code ที่ใช้ครับ</strong></p><p>code จริงๆก็ประมาณนี้เองครับ แต่อธิบายยากนะจะบอกให้ อิอิ โดยบรรทัดแรกนั้นเป็นการสร้าง SoapClient จาก WSDL ครับผมโดยอันนี้สังเกตุได้ว่าผมจะเติม ?WSDL ด้วยเพราะเจ้า WebService ของ .NET ปกติมันไม่้ได้ทำออกมาเป็น WSDL ซึ่งเราสามารถเล่นกับ WebService ก่อนได้ครับ เช่น มี Method ที่รับ Int แล้ว Return String เราก็สามารถลองใส่ Int เล่นๆได้ครับแล้วกดเพื่อดูผลลัพธ์ได้เลย<br
/> <br/><br
/> มาดูบรรทัดที่ 2 กับ 3 ครับ เราจะทำการสร้าง Array Structure ลอยๆขึ้นมาก่อนครับเพื่อให้ถูกต้องตาม Complex Type นั้นในที่นี้ผมเลยสร้างชื่อ $wrapper-&gt;gc ต้องเป็นชื่อ gc นะครับดูจาก Complex type 1.0 จะเห็นว่า name=&#8221;gc&#8221; อันนี้ต้องตั้งชื่อตามเขา ทุกๆ Variable (ส่วนคำว่า $wrapper เปลี่ยนได้) เลยเลยสรุปเป็น $wrapper-&gt;gc-&gt;Count ดูจาก Complex type 1.1 จะเห็นได้ว่า name=&#8221;Count&#8221; ซึ่งต้องเหมือนกันเปะๆ ทำเสร็จแล้วคราวนี้เราจะได้ Array Structure ที่ตรงกับ Complex Type แล้ว<br
/> <br/><br
/> ต่อมาดูบรรทัดที่ 4 ครับผมทำการสร้างตัวแปรชื่อ $params ให้เท่ากับ SoapParam($wrapper,&#8221;sendObject&#8221;); อันนี้และครับพระเอกของงานนี้ โดยเจ้า SoapParam เนี้ยมันจะทำการ Map ตัวแปร $wrapper กับ element name=&#8221;sendObject&#8221; ดูได้จาก Complex Type 1.0 นั้นหมายความว่าตอนนี้เราจะได้ $params ที่พร้อมจะส่งข้อมูลเป็น object แล้ว<br
/> <br/><br
/> บรรทัดที่ 5 ก็เป็นการเรียก WebService ในคำสั่งที่ว่า $client-&gt;sendObject($params) แบบนี้ส่วน var_dump คือการ dump ตัวแปรออกมาดูว่าข้างในมีอะไรบ้างซึ่งผลลัพธ์จะแล้วแต่คนทำ Business Logic ใน WebService นะครับโดยผมจะได้ดังนี้<br
/> <br/><p
style="text-align: center;margin-top:10px;margin-bottom:10px;">object(stdClass)#3 (1) {   ["sendObjectResult"]=&gt;   int(20) }</p><p
style="text-align: center;"><p><br/><p
style="text-align: left;">จริงๆแล้วผลลัพธ์ที่ผมได้ออกมาเป็น 20 นั้นสาเหตุคือ ผมให้มัน return 10+gc.Count แล้วผมใส่ gc.Count เป็น 10 เลยได้ออกมาเป็น 20 อย่างที่เห็นครับผม ส่วนถ้าใครต้องการข้อมูล 20 เลยนั้นต้องเรียกแบบนี้ครับ</p><p><br/></p><p
style="text-align: left;"><p
style="text-align: center;margin-top:10px;margin-bottom:10px;">echo $client-&gt;sendObject($params)-&gt;sendObjectResult // ผลลัพธ์ที่ได้คือ 20</p><p
style="text-align: center;"><p><br/><p
style="text-align: left;">อันนี้คือตามหลักของ SOAP นะครับก็คือจะมีทั้ง Request Response ก็ต้องยอมๆเขาไปครับ สังเกตุนะครับว่าไม่มีวงเล็บ เพราะมันเป็นการเรียกข้อมูล variable นะครับไม่ใช่เรียก method วันนี้ผมก็นำมา share ให้คนที่มีปัญหาเรื่องนี้ทำกันนะครับ ส่วนเรื่อง return เป็น object นั้นไม่ต้องทำอะไรเลยครับ มันก็จะ return มาเป็น เหมือน Array Structure นะครับเอาไปเรียกใช้ได้ตามสะดวกเลยครับพี่น้องครับ วันนี้ผมลาไปก่อนแล้วนะครับ สวัสดีครับ</p> Similar Posts:<ul><li><a
href="http://www.dominixz.com/blog/programming-solution/clean-tag-html-with-jquery/" rel="bookmark" title="July 19, 2008">ทำความสะอาด Tag Html ด้วย jQuery</a></li><li><a
href="http://www.dominixz.com/blog/review/software/ixedit-easy-to-do-interaction-ria-with-jquery-and-jquery-ui/" rel="bookmark" title="July 15, 2010">IxEdit ใครจะคิดว่าทำ RIA หรือ Interaction จะง่ายดายเพียงนี้</a></li><li><a
href="http://www.dominixz.com/blog/programming-solution/how-to-get-share-count-link-on-facebook/" rel="bookmark" title="June 25, 2011">Facebook API สำหรับดู Share Count ของ Link</a></li></ul>]]></content:encoded> <wfw:commentRss>http://www.dominixz.com/blog/programming-solution/php-call-dot-net-webservice-that-require-object-param/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>แก้ปัญหา Web Service กับภาษาไทยกับ URL Encode/Decode</title><link>http://www.dominixz.com/blog/programming-solution/solve-web-service-with-thai-lang/</link> <comments>http://www.dominixz.com/blog/programming-solution/solve-web-service-with-thai-lang/#comments</comments> <pubDate>Thu, 24 Apr 2008 13:45:56 +0000</pubDate> <dc:creator>DominixZ</dc:creator> <category><![CDATA[วิธีแก้ปัญหาเขียนโปรแกรม]]></category> <category><![CDATA[url]]></category> <category><![CDATA[web 2.0]]></category> <category><![CDATA[web service]]></category><guid
isPermaLink="false">http://www.dominixz.com/blog/?p=222</guid> <description><![CDATA[Developer หลายคนน่าจะเคยประสบปัญหาเรียก Web Service ส่งภาษาไทยไปแล้ว ทำไมค่าเพี้ยนบ้าง หรือจะรับค่ามา ทำไมเป็นตัว %C2%A3%E2%82%AC แนวนี้ตลอดเลย จะแก้ปัญหายังไงดี ?? วันนี้ผมก็เอาใจคนใช้ PHP กับ Javascript กันครับ (เพราะผมศึกษา 2 ตัวนี้เป็นหลักนะครับ) ถ้าสำหรับ PHP แล้วการแก้ปัญหาก็คือ ก่อนส่ง Parameter ไปให้ทำการใช้ function rawurlencode(string $str) ก่อนแล้วการส่งภาษาไทยไปก็จะถูกต้อง สำหรับการรับ Parameter จะขึ้นอยู่กับคนทำ Web Service เช่นถ้าเป็น Google เราได้ผลลัพธ์เป็นแนวนี้ %C2%A3%E2%82%AC (แต่จริงๆคือมันเป็นภาษาไทย) เราก็ต้องมาทำการ rawurldecode(string $str) มาเป็นตัวแก้เหมือนกัน ข้อแนะนำพิเศษสำหรับ OOP ที่มีการส่งค่าไปๆมาๆบ่อยอาจเกิดการ rawurldecode เปลี่ยนแปลงได้ดังนั้นต้องระวังดีๆนะครับ ส่วนใครใช้ Javascript แล้วละก็เราต้องไปหา function ที่ชื่อว่า encodeURI [...]]]></description> <content:encoded><![CDATA[<p>Developer หลายคนน่าจะเคยประสบปัญหาเรียก Web Service ส่งภาษาไทยไปแล้ว ทำไมค่าเพี้ยนบ้าง หรือจะรับค่ามา ทำไมเป็นตัว %C2%A3%E2%82%AC<br
/> แนวนี้ตลอดเลย จะแก้ปัญหายังไงดี ?? วันนี้ผมก็เอาใจคนใช้ PHP กับ Javascript กันครับ (เพราะผมศึกษา 2 ตัวนี้เป็นหลักนะครับ) ถ้าสำหรับ PHP แล้วการแก้ปัญหาก็คือ</p><ul><li>ก่อนส่ง Parameter ไปให้ทำการใช้ function <a
href="http://th2.php.net/manual/en/function.rawurlencode.php">rawurlencode(string $str) </a>ก่อนแล้วการส่งภาษาไทยไปก็จะถูกต้อง</li><li>สำหรับการรับ Parameter จะขึ้นอยู่กับคนทำ Web Service เช่นถ้าเป็น Google เราได้ผลลัพธ์เป็นแนวนี้ %C2%A3%E2%82%AC (แต่จริงๆคือมันเป็นภาษาไทย) เราก็ต้องมาทำการ <a
href="http://th2.php.net/rawurldecode">rawurldecode(string $str)</a> มาเป็นตัวแก้เหมือนกัน</li><li>ข้อแนะนำพิเศษสำหรับ OOP ที่มีการส่งค่าไปๆมาๆบ่อยอาจเกิดการ rawurldecode เปลี่ยนแปลงได้ดังนั้นต้องระวังดีๆนะครับ</li></ul><p>ส่วนใครใช้ Javascript แล้วละก็เราต้องไปหา function ที่ชื่อว่า <a
href="http://www.w3schools.com/jsref/jsref_encodeURI.asp">encodeURI</a> กับ <a
href="http://www.w3schools.com/jsref/jsref_decodeURI.asp">decodeURI</a> ไม่ใช่ L นะครับเป็นตัว i (ยูอาไอ) เสร็จวิธีการใช้ก็ใส่ String เข้าไปเหมือนเดิมครับ โอ้วโหวง่ายไหมครับ <img
src='http://www.dominixz.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> เส้นผมบังภูเขา แถมอีกนิดสำหรับสมัยนี้แล้ว Data ส่วนใหญ่ใน Web Service มักจะเป็น XML กับ JSON (ส่วนตัวผมชอบ JSON นะ) โดยถ้า JSON สำหรับ PHP แล้วนั้นผมมี function มาให้รู้จักกันอีกนั้นคือ json นั้นคือ <a
href="http://th.php.net/manual/en/function.json-decode.php">json_decode() </a>กับ <a
href="http://th.php.net/manual/en/function.json-encode.php">json_encode()</a></p><p>แต่ผมเตือนนิดหน่อยคือ json_decode() นั้นไม่สามารถใช้กับ element ที่มาความลึกถึง 127 ชั้นได้ (ไม่ใช่มีชั้นเดียวแล้ว 127 data อันนั้นได้อยู่) วันนี้มาแนว Coding นิดหน่อยแต่หวังว่าคงมีประโยชน์สำหรับคนที่กำลังหัดหรือใช้ Web Service กันนะครับ</p> Similar Posts:<ul><li><a
href="http://www.dominixz.com/blog/programming-solution/ajax-cross-domain-with-codeigniter-and-jquery/" rel="bookmark" title="March 6, 2009">วิธีทำ Ajax Cross Domain แบบสมบูรณ์ด้วย CodeIgniter และ jQuery</a></li><li><a
href="http://www.dominixz.com/blog/review/web-development/codeigniter-jquery-extjs-adobe-air/" rel="bookmark" title="April 25, 2008">Codeigniter , jQuery , Ext-Js และ Adobe AIR</a></li><li><a
href="http://www.dominixz.com/blog/review/software/adobe-air-not-hard/" rel="bookmark" title="April 18, 2008">เล่าสูกันฟัง Adobe AIR ไม่ยากอย่างที่คิด</a></li></ul>]]></content:encoded> <wfw:commentRss>http://www.dominixz.com/blog/programming-solution/solve-web-service-with-thai-lang/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic (User agent is rejected)
Database Caching using disk: basic

Served from: www.dominixz.com @ 2012-02-10 06:00:59 -->
