ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingขอความช่วยเหลือเรื่อง PHP ติดต่อ ASP.net Web Service ครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ขอความช่วยเหลือเรื่อง PHP ติดต่อ ASP.net Web Service ครับ  (อ่าน 12077 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« เมื่อ: 01 ตุลาคม 2009, 23:07:34 »

สวัสดีครับ

เนื่องจากตอนนี้ผมได้เขียน asp.net web service ขึ้นมาครับ โดยที่ Web service ผมได้ใช้ฐานข้อมูลคือ Mysql ครับ ซึ่งหาก เราต้องการเรียกใช้งานในเครื่องตัวเอง เราต้องเรียกที่ http://localhost:1960/LifeWebService/Service.asmx?WSDL ใช่ไหมครับ


Asp.net web service
โค๊ด:
	[WebMethod(Description = "This method get type test")]
public DataSet GetTypeTest()
{

DataSet ds = null;

using (OdbcConnection conn = new OdbcConnection("DSN=LifeMySQL"))
{
// Open a connection to the MySQL database.
conn.Open();

// Retrieve the users from the MySQL database.
using (OdbcCommand cmd = new OdbcCommand("select * from type", conn))
{
OdbcDataAdapter adp = new OdbcDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds);
}

// Close the connection.
conn.Close();
}

return ds;
}

ซึ่งมันจะได้ไฟล์ WSDL แบบนี้ครับ

โค๊ด:
<wsdl:definitions targetNamespace="http://tempuri.org/">

<wsdl:types>

<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">

<s:element name="GetTypeTest">
<s:complexType/>
</s:element>

<s:element name="GetTypeTestResponse">

<s:complexType>

<s:sequence>

<s:element minOccurs="0" maxOccurs="1" name="GetTypeTestResult">

<s:complexType>

<s:sequence>
<s:element ref="s:schema"/>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>

<wsdl:message name="GetTypeTestSoapIn">
<wsdl:part name="parameters" element="tns:GetTypeTest"/>
</wsdl:message>

<wsdl:message name="GetTypeTestSoapOut">
<wsdl:part name="parameters" element="tns:GetTypeTestResponse"/>
</wsdl:message>

<wsdl:portType name="ServiceSoap">

<wsdl:operation name="GetTypeTest">
<wsdl:documentation>This method get type test</wsdl:documentation>
<wsdl:input message="tns:GetTypeTestSoapIn"/>
<wsdl:output message="tns:GetTypeTestSoapOut"/>
</wsdl:operation>
</wsdl:portType>

<wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="GetTypeTest">
<soap:operation soapAction="http://tempuri.org/GetTypeTest" style="document"/>

<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>

<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

<wsdl:binding name="ServiceSoap12" type="tns:ServiceSoap">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="GetTypeTest">
<soap12:operation soapAction="http://tempuri.org/GetTypeTest" style="document"/>

<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>

<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>

<wsdl:service name="Service">

<wsdl:port name="ServiceSoap" binding="tns:ServiceSoap">
<soap:address location="http://localhost:1960/LifeWebService/Service.asmx"/>
</wsdl:port>

<wsdl:port name="ServiceSoap12" binding="tns:ServiceSoap12">
<soap12:address location="http://localhost:1960/LifeWebService/Service.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

ผมได้ลองทำการเขียนไฟล์ PHP มา Select มันแต่มันก็ขึ้น Error แบบนี้ด้านล่างนะครับ

PHP
โค๊ด:
	$client = new SoapClient("http://localhost:1960/LifeWebService/Service.asmx?WSDL");
$result = $client->GetTypeTest;
echo $result;

Error
โค๊ด:
Warning: SoapClient::SoapClient(http://localhost:1960/LifeWebService/Service.asmx?WSDL) [soapclient.soapclient]: failed to open stream: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. in C:\AppServ\www\XML\Test.php on line 3

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "http://localhost:1960/LifeWebService/Service.asmx?WSDL" in C:\AppServ\www\XML\Test.php on line 3

Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\XML\Test.php on line 38

คือตอนนี้ผมไม่ทราบเลยครับว่าปัญหามันเกิดจากอะไร ซึ่งผมได้ลองนำ Code ที่หาทั่วไปมารันในเครื่องตัวเอง (แต่ติดต่อกับ web Service ภายนอก) มันก็สามารถใช้งานได้ปกติดี และผมได้ทำการทดสอบโดยการเขียน C#.net มาเรียกใช้งานตัว Webserivce ก็ปกติดีทุกอย่าง แต่ตอนนี้ผมไม่สามารถเรียกใช้งานมันผ่าน PHP ที่ผมเขียนขึ้นมาได้ใน Localhost ครับ

และนี้เป็นอีกอย่างที่ผมได้ลองเขียน
โค๊ด:
try {
    if(!@file_get_contents($wsdl)) {
throw new SoapFault('Server', 'No WSDL found at ' . $wsdl);
    }

$client = new SoapClient($wsdl);

$result = $client->GetType(array("adminPassword" => "123456"));

} catch(SoapFault $e) {
var_dump(get_class($e));
} catch (Exception $e) {
var_dump(get_class($e));
}
var_dump($result);


มัน Error แบบนี้ครับ

string(9) "SoapFault" NULL


ไม่ทราบว่าผมทำผิดพลาดตรงไหนหรือเปล่าครับ จนปัญญาจริงๆครับ ปวดหัว กดดันมากครับ ท่านใดพอชี้แนะผมได้ไหมครับ ว่าผมควรจะแก้ไขตรงไหน หรือเปลี่ยน Web Service ก็ได้นะครับ ที่มันสามารถเขียน PHP ไปติดต่อได้ง่ายกว่านี้ โดนที่ Web Service จะต้องมีการรับค่าเพื่อไปเลือกข้อมูลมาแสดงนะครับ หรือท่านใดมี PHP Framework อะไรที่มันสามารถติดต่อกับ Web Service ได้ง่านๆ รบกวนแนะนำผมหน่อยนะครับ

ขอบคุณครับ
Sutenm

บันทึกการเข้า

Powered By Sutenm
sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 02 ตุลาคม 2009, 08:56:15 »



ขอบคุณครับที่แย้งกันตอบ  wanwan017
บันทึกการเข้า

Powered By Sutenm
pugkung
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 196
ออฟไลน์ ออฟไลน์

กระทู้: 2,681



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 02 ตุลาคม 2009, 10:04:07 »

พอดีความสามารถผมไม่ถึงครึ่งของท่านเลย มิกล้าครับ  wanwan031




จริง ๆ แล้ว ไม่รู้เรื่องเลยครับ  Embarrassed

ปล.ขอโทษที่เข้ามามั่ว  Tongue
บันทึกการเข้า

cmbuy
สมุนแก๊งเสียว
*

พลังน้ำใจ: 8
ออฟไลน์ ออฟไลน์

กระทู้: 556



ดูรายละเอียด
« ตอบ #3 เมื่อ: 02 ตุลาคม 2009, 10:12:35 »

จำเป็นที่ต้องเป็น Soap ด้วยหรือเปล่าครับ ถ้าไม่จำเป็น ต้องการแค่เรียกใช้ก็แบบนี้ก็ได้ครับ
WebService รับค่าจากภายนอกจะ get หรือ post ก็ได้แล้วให้มันปล่อย xml ออกมา
จากนั้นก็เรียกไฟล์นั้นออกไปทำงานต่อก็ได้
เข้าใจว่า อยากจะทำโครงสร้างให้เหมือนเว็บ amazon ที่ปล่อย Webserver ออกมา
บันทึกการเข้า

- -!
sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 02 ตุลาคม 2009, 10:44:37 »

สวัสดีครับ

จำเป็นที่ต้องเป็น Soap ด้วยหรือเปล่าครับ ถ้าไม่จำเป็น ต้องการแค่เรียกใช้ก็แบบนี้ก็ได้ครับ
WebService รับค่าจากภายนอกจะ get หรือ post ก็ได้แล้วให้มันปล่อย xml ออกมา
จากนั้นก็เรียกไฟล์นั้นออกไปทำงานต่อก็ได้
เข้าใจว่า อยากจะทำโครงสร้างให้เหมือนเว็บ amazon ที่ปล่อย Webserver ออกมา

คุณ cmbuy อยู่เชียงใหม่หรอครับ ผมไม่สามารถ Connect กับ Web Service ที่ผมสร้างมันขึ้นมาได้เลยครับ ไม่ทราบว่าคุณ cmbuy เคยเขียนโปรแกรมลักษณะแบบนี้หรือเปล่าครับ ผมอยากขอคำแนะนำเป็นอย่างมากเลยครับ ผมเองก็อยู๋เชียงใหม่เหมือนกันครับ
บันทึกการเข้า

Powered By Sutenm
sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 02 ตุลาคม 2009, 10:46:59 »

พอดีความสามารถผมไม่ถึงครึ่งของท่านเลย มิกล้าครับ  wanwan031




จริง ๆ แล้ว ไม่รู้เรื่องเลยครับ  Embarrassed

ปล.ขอโทษที่เข้ามามั่ว  Tongue

ขอบคุณที่ช่วยแสดงความคิดเห้นครับ ผมเครียดกับโปรแกรมนี้มากๆเลยครับ ตอนแรกที่เขียนไม่คิดว่ามันจะยากขนาดนี้เลยครับ เหอๆ
บันทึกการเข้า

Powered By Sutenm
alert
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 50
ออฟไลน์ ออฟไลน์

กระทู้: 1,741



ดูรายละเอียด
« ตอบ #6 เมื่อ: 02 ตุลาคม 2009, 11:04:53 »

ผมดูคร่าวๆ นะครับ แล้ว xml ที่ส่งออกมา ทำไมหัวมันไม่มีหล่ะครับ อาจจะ error ตรงนี้รึเปล่าอ่ะ

<?xml version="1.0"?>

อันนี้หน่ะครับ
บันทึกการเข้า

***** รับซื้อเว็บไซต์สายขาวคุณภาพ  ตั้งแต่ 500-30,000 uip มี traffic มาจาก Google  และไม่เคยโดนแบน adsense  เสนอราคามาทาง pm ได้เลยครับ *****
sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 02 ตุลาคม 2009, 11:38:45 »

ผมดูคร่าวๆ นะครับ แล้ว xml ที่ส่งออกมา ทำไมหัวมันไม่มีหล่ะครับ อาจจะ error ตรงนี้รึเปล่าอ่ะ

<?xml version="1.0"?>

อันนี้หน่ะครับ

มันติดต่อกันผ่าน มาตราฐาน WSDL นะครับ เราต้งอส่งค่าเข้าไปมันถึงจะได้ไฟล์ XML ออกมานะครับ
บันทึกการเข้า

Powered By Sutenm
alert
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 50
ออฟไลน์ ออฟไลน์

กระทู้: 1,741



ดูรายละเอียด
« ตอบ #8 เมื่อ: 02 ตุลาคม 2009, 13:19:18 »

ผมดูคร่าวๆ นะครับ แล้ว xml ที่ส่งออกมา ทำไมหัวมันไม่มีหล่ะครับ อาจจะ error ตรงนี้รึเปล่าอ่ะ

<?xml version="1.0"?>

อันนี้หน่ะครับ

มันติดต่อกันผ่าน มาตราฐาน WSDL นะครับ เราต้งอส่งค่าเข้าไปมันถึงจะได้ไฟล์ XML ออกมานะครับ


ลองกลับไปดู code ที่ผมเคยทำละ ไม่ต้องมี จริงๆ ด้วย  wanwan031


ส่วนที่เหลือผมไม่ทราบแล้วครับ ไม่เคยใช้ WSDL ครับ เคยเขียนแนวนี้เหมือนกัน แต่เป็น มาตรฐาน OGC ของพวก GIS software  แล้วอ่านค่าด้วย .net ด้วยอ่ะครับ ต้องรอถามคนต่อไปแล้วหล่ะครับ wanwan017
« แก้ไขครั้งสุดท้าย: 02 ตุลาคม 2009, 13:31:23 โดย alert » บันทึกการเข้า

***** รับซื้อเว็บไซต์สายขาวคุณภาพ  ตั้งแต่ 500-30,000 uip มี traffic มาจาก Google  และไม่เคยโดนแบน adsense  เสนอราคามาทาง pm ได้เลยครับ *****
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 02 ตุลาคม 2009, 23:21:07 »

อาการนี้ผมว่าไปไล่เช็คที่ตัว เว็บ service ก่อนดีกว่า ครับ ปัญหาไม่น่าจะเกิดจาก PHP ยังไง ถ้าอัพขึ้น server จะลองช่วยเทสเชื่อมให้ครับ

จริงๆ แล้วผมละเบื่อกับการเชื่อม Soap Protocol มากๆ ต้องมานั่งไล่ wsdl ก็ปวดหัวละ ทำไมไม่ใช่ rest protocol หรือ xmlrpc ดูบ้างล่ะ
บันทึกการเข้า

sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 03 ตุลาคม 2009, 00:00:38 »

อาการนี้ผมว่าไปไล่เช็คที่ตัว เว็บ service ก่อนดีกว่า ครับ ปัญหาไม่น่าจะเกิดจาก PHP ยังไง ถ้าอัพขึ้น server จะลองช่วยเทสเชื่อมให้ครับ

จริงๆ แล้วผมละเบื่อกับการเชื่อม Soap Protocol มากๆ ต้องมานั่งไล่ wsdl ก็ปวดหัวละ ทำไมไม่ใช่ rest protocol หรือ xmlrpc ดูบ้างล่ะ

ที่ผมใช้ WSDL ก็เพราะว่ามันทำ WebService ง่ายเฉยๆ ครับ ตอนทำก็ไม่ทราบหรอครับว่ามันจะติดต่อกันยากขนาดนี้ ส่วน rest protocol หรือ xmlrpc ผมไม่รู้จักเลยครับ ตอนนี้เขียนติดต่อกับมันได้แล้วครับ ง่ายๆ แต่ไม่ง่ายที่จะหาสาเหตุ ผมเปลี่ยนจาก Appserv เป็น XAMPP ครับ เหอ.. น้ำตาแทบไหล กว่าจะติดต่อกับมันได้
บันทึกการเข้า

Powered By Sutenm
genetic
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 76
ออฟไลน์ ออฟไลน์

กระทู้: 1,703



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 03 ตุลาคม 2009, 07:57:57 »

โค๊ด:
http://localhost:1960/LifeWebService/Service.asmx?WSDL

ถ้าเข้าอย่างนี้ทาง browser จะเห็น wsdl หรือเปล่าอ่ะครับ
บันทึกการเข้า

sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 03 ตุลาคม 2009, 09:12:21 »

โค๊ด:
http://localhost:1960/LifeWebService/Service.asmx?WSDL

ถ้าเข้าอย่างนี้ทาง browser จะเห็น wsdl หรือเปล่าอ่ะครับ



เห็นครับผม

ไม่ทราบท่านใดมี Tools ที่สามารถเจนไฟล์ของทั้งสองฝั่งได้ง่ายๆ ไหมครับ
บันทึกการเข้า

Powered By Sutenm
genetic
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 76
ออฟไลน์ ออฟไลน์

กระทู้: 1,703



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 03 ตุลาคม 2009, 10:43:15 »

ไม่เคยเจอปัญหานี้เลยอ่ะครับ

ตอนผมเริ่มทำ WSDL ก็ปวดหัวมากมายเหมือนกันครับ มันเป็นอะไรนักหนาก็ไม่รู้

แล้วที่ทำงานก็เร่งอีก  Tongue Tongue
บันทึกการเข้า

kuznetsova
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 137
ออฟไลน์ ออฟไลน์

กระทู้: 1,316



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 03 ตุลาคม 2009, 11:14:25 »

ถ้าได้แล้วมาบอกวิธีหน่อยนะครับไม่เคยเขียน WSDL เลย
บันทึกการเข้า

Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 04 ตุลาคม 2009, 00:00:37 »

ถ้าเป็น PHP แล้ว มาเขียน Soap Service + WSDL โดยที่คิดจะ define wsdl เอง นี่มี ขี้แตก เยี่ยวราด กันไปข้างนึง แน่นอน

แต่ถ้ามี Zend อยู่บนโลกนี้แล้วล่ะก็ ทุกอย่างก็ไม่มีปัญหา
http://framework.zend.com/manual/en/zend.soap.wsdl.html
บันทึกการเข้า

sutenm
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,563



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 05 ตุลาคม 2009, 01:29:15 »

ถ้าเป็น PHP แล้ว มาเขียน Soap Service + WSDL โดยที่คิดจะ define wsdl เอง นี่มี ขี้แตก เยี่ยวราด กันไปข้างนึง แน่นอน

แต่ถ้ามี Zend อยู่บนโลกนี้แล้วล่ะก็ ทุกอย่างก็ไม่มีปัญหา
http://framework.zend.com/manual/en/zend.soap.wsdl.html


ผมไม่เคยใช้ framework ตัวนี้เลยครับ ไม่รู้จะเริ่มต้นตรงไหนดีครับ

ถ้าได้แล้วมาบอกวิธีหน่อยนะครับไม่เคยเขียน WSDL เลย


ผมสัญญาครับว่าหลังจากจบโปรเจคตัวนี้จะนำความรู้ที่จัดทำออกมาเผยแพร่แน่นอนครับ เนื่องจากตัวผมเองก็หาข้อมูลได้ยากมากๆ เลยครับ
« แก้ไขครั้งสุดท้าย: 05 ตุลาคม 2009, 08:57:51 โดย sutenm » บันทึกการเข้า

Powered By Sutenm
nuijang24
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 21



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 05 ตุลาคม 2009, 12:33:40 »

ผมแนะนำ ว่าให้ลองใช้ตัว nusoap จะดีกว่านะครับ ปัจจุบันเป็นเวอร์ชั่น nusoap_0.7.2 ซึ่งหาโหลดได้จาก http://sourceforge.net/projects/nusoap/
 
เมื่อโหลด nusoap ได้มาแล้ว ทีนี้ก็ดูตาม sample โคดนี้นะครับ
// สมมุติ ผมได้สร้าง web method ขึ้นมาตัวนึงดังนี้
  [WebMethod]
  public string HelloWorld(string str1)
  {
   return "Hello World "+str1;
  }
//=====================================
จาก web method ที่ได้สร้างขึ้นมา จะมี method HelloWorld ซึ่งรับค่า parameter ชื่อ str1
และจากนั้นจะ return ค่ามาเป็นคำว่า Hello World  + ค่าของ parameter ซึ่งเมื่อมีการเรียกใช้งาน web method ที่สร้าง ขึ้นมานี้จะคืนค่ากลับมาเป็น xml ดังนี้
// =========================================

  <?xml version="1.0" encoding="utf-8" ?>
  <string xmlns="http://tempuri.org/ ">Hello World nuijang</string>
// =========================================

คราวนี้มาดูว่าเราจะใช้ php เรียกใช้งาน web method ที่สร้างขึ้นมาจาก .Net ได้อย่างไรนะครับ
ให้เรา ดาวน์โหลด nusoap มาจาก link ด้านบน แล้วนำมาแตกไฟล์ จะได้โฟลเดอร์ lib ภายในจะมี Class ต่างๆมากมาย ให้ copy โฟรเดอร์ lib ทั้งหมด มาวางไว้ที่ root directory ใหม่
 
จากนั้น เขียนโคดดังนี้
<?php
    require_once('nusoap_0.7.2/lib/nusoap.php');  // include ไฟล์ nusoap.php เข้ามาไว้ใน project
// สร้าง ตัวแปร object soapclient โดยจะต้องส่ง parameter 2 ตัว คือ 1. URL web service (จะต้องต่อท้ายด้วย ?WSDL ด้วยนะครับ) 2. ค่า true
    $eventclient = new soapclient('http://localhost/testwebservice/index.asmx?WSDL',true );
// จากนั้นดูว่า web method ที่เราสร้างขึ้นมีการส่ง parameter มาหรือเปล่า ถ้ามี จะต้อง สร้าง parameter ด้วย และ เนื่องจาก การใช้งาน nusoap ค่าที่ส่งเป็น parameter จะเป็น array เพราะฉะนั้น เราจึงต้องสร้าง parameter เป็น array ดังนี้
$params = array('str1'=>'nuijang');
// จากนั้นขั้นตอนสุดท้ายของการส่ง ค่าไปยัง web service คือการเรียกใช้ method call ของ class soapclient จาก nusoap นะครับ
 
//ทำการเรียกใช้งาน webservice โดย ส่ง parameter ของ method call(string $operation, [ array $params, string $namespace, string $soapAction, boolean $headers ])
// เนื่องจากค่าที่คืนมา จะเป็น Array เราจึงต้องเอาตัวแปร $data มารับค่า จาก method call
 
$data = $eventclient->call('HelloWorld',array('parameters' =>$params), '', '', false, true);
 
// และสุดท้าย ก้อคือ การนำข้อมูลมาแสดงผลนั่นเอง
   foreach ($data as $value) {
    echo $value ."<br>";
   }
// หรือ print_r($data);  // เราจะพบว่าค่า result ที่ได้กลับมาจะเป็นในรูป array ซึ่ง จะเป็นชื่อ method ที่เรียกต่อท้ายด้วย result เป็น keyword ที่จะเข้าถึงข้อมูลในตัวแปร array ดังนี้
Array ( [HelloWorldResult] => Hello World nuijang )
ทำให้เราสามารถใช้งาน บรรทัดด้านล่างนี้ เพื่อเข้าถึงข้อมูลได้เหมือนกัน
echo $data['HelloWorldResult']; 
 และ ผลลัพธ์ จะได้ออกมาเป็น

Hellow world nuijang

// =====================================================
จบแล้วครับ ถ้า ดาวน์โหลด nusoap มาจะมี sample ตัวอย่างการติดต่อ แบบต่างๆมาให้มากมาย ลองเล่นดูนะครับ
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์