|
วิธีการสร้าง PHP กับ Web Service และ Return Array ไปยัง Client ด้วย NuSoap |
วิธีการสร้าง PHP กับ Web Service และ Return Array ไปยัง Client แบบ Array ด้วย Library ของ NuSoap บทความก่อนหน้านี้เราได้เรียนรู้เทคนิคการใช้ Web Service ผ่าน PHP ด้วย Library ของ NuSoap แล้ว แต่ยังสามารถทำการ Return ค่ากลับไปยัง Client ในรูปแบบของ String แต่บทความนี้ใด้เพิ่มความสามารถให้สามารถ Return ค่าไปยัง Client ในรูปแบบของ Array และฝั่ง Client สามารถรับค่า Array โดยใช้ function for หรือ foreach ในการ Loop เพื่อแสดงค่าจาก Web Service ที่ส่งกลับค่าออกมาในรูปแบบของ Array
Screenshot
ก่อนอ่านบทความนี้ควรอ่าน 2 บทความนี้ก่อน
สำหรับบทความพื้นฐานการสร้างและเรียกใช้งาน Web Service สามารถอ่านได้จาก 2 บทความที่ได้แนะนำในข้างต้น
สรุปได้ว่าจากบทความแรก ถ้าต้องการให้ return ค่าในรูปแบบของ Array จะต้องเพิ่มและแก้ไขบรรทัด (แก้ไขฝั่ง Server)
// Register service and method
$server->register('HelloWorld',$varname, array('return' => 'tns:ArrayOfString'));
//Add ComplexType with Array
$server->wsdl->addComplexType("ArrayOfString",
"complexType",
"array",
"",
"SOAP-ENC:Array",
array(),
array(array("ref"=>"SOAP-ENC:arrayType","wsdl:arrayType"=>"xsd:string[]")),
"xsd:string");
ส่วนของ Client สามารถใช้ loop หรือ foreach ทำการแสดงค่าได้ปกติ
สำหรับบทความนี้ใช้ Library ของ NuSoap สามารถดาวน์โหลดได้ที่
หรือจะดาวน์โหลดได้จากในส่วนท้ายของบทความ
Code เต็ม ๆ
Web Service ฝั่ง Server
WebServiceServer.php
<?php
require_once("lib/nusoap.php");
//Create a new soap server
$server = new soap_server();
//Define our namespace
$namespace = "http://localhost/nusoap/WebServiceServer.php";
$server->wsdl->schemaTargetNamespace = $namespace;
//Configure our WSDL
$server->configureWSDL("HelloWorld");
//Register our method and argument parameters
$varname = array(
'strName' => "xsd:string",
'strEmail' => "xsd:string"
);
// Register service and method
$server->register('HelloWorld',$varname, array('return' => 'tns:ArrayOfString'));
//Add ComplexType with Array
$server->wsdl->addComplexType("ArrayOfString",
"complexType",
"array",
"",
"SOAP-ENC:Array",
array(),
array(array("ref"=>"SOAP-ENC:arrayType","wsdl:arrayType"=>"xsd:string[]")),
"xsd:string");
function HelloWorld($strName,$strEmail)
{
$arr[1] = $strName;
$arr[2] = $strEmail;
return $arr;
}
// Get our posted data if the service is being consumed
// otherwise leave this data blank.
$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '';
// pass our posted data (or nothing) to the soap service
$server->service($POST_DATA);
exit();
?>
Web Service ฝั่ง Client
สร้างไฟล์สำหรับ Client เพื่อทดสอบเรียก Web Sevice
WebServiceClient.php
<html>
<head>
<title>ThaiCreate.Com</title>
</head>
<body>
<?php
include("lib/nusoap.php");
$client = new nusoap_client("http://localhost/nusoap/WebServiceServer.php?wsdl",true);
$params = array(
'strName' => "Weerachai Nukitram",
'strEmail' => "[email protected]"
);
$data = $client->call("HelloWorld",$params);
print_r($data);
echo "<hr>";
foreach($data as $val)
{
echo $val."<br>";
}
?>
</body>
</html>
Screenshot
ผลลัพธ์ที่ได้
ทดสอบกับ .NET ด้วย ASP.NET
สำหรับพื้นฐาน ASP.NET เรียก Web Service ของ PHP สามารถอ่านได้ที่นี่
Go to : PHP สร้าง Web Service และใช้ .NET เรียก Web Service ของ PHP (ASP.NET and Windows Form)
สร้างหน้า WebPage เหมือนในรูป
Add หน้า Web Service กรอก URL ให้ถูกต้อง
Code สำหรับภาษา VB.NET และ C#
- VB.NET
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub btnCall_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCall.Click
Dim myHW As New myHelloWorld.HelloWorld
Dim myArr As Array = DirectCast(myHW.CallHelloWorld(Me.txtName.Text, Me.txtEmail.Text), Array)
Dim i As Integer = 0
For i = 0 To UBound(myArr)
Me.lblResponse.Text = Me.lblResponse.Text & " array (" & i & ") = " & myArr(i).ToString() & "<br>"
Next
End Sub
End Class
- C#
public partial class _Default : System.Web.UI.Page
{
protected void btnCall_Click(object sender, EventArgs e)
{
myHelloWorld.HelloWorld myHW = new myHelloWorld.HelloWorld();
Array myArr = (Array)myHW.CallHelloWorld(this.txtName.Text, this.txtEmail.Text);
int i = 0;
for (i = 0; i < myArr.Length; i++)
{
this.lblResponse.Text = this.lblResponse.Text + " array (" + i + ") = " + myArr.GetValue(i).ToString() + "<br>";
}
}
}
Screenshot
จะเห็นว่าใน .NET ก็สามารถรับค่าในรูปแบบของ Array จาก Web Service ของ PHP ได้เช่นเดียวกัน
สำหรับ Code ทั้งหมดทั้ง PHP Web Service และ ASP.NET by VB.NET or C# สามารถดาวน์โหลดได้จากที่นี่
Download Code !!
บทความอื่น ๆ ที่เกี่ยวข้อง
Go to : PHP Create - Call Web Service สร้างและเรียกเว็บเซอร์วิส ด้วย PHP (NuSoap and Soap)
Go to : PHP สร้าง Web Service และใช้ .NET เรียก Web Service ของ PHP (ASP.NET and Windows Form)
Go to : php กับ web service ขอคำปรึกษาเรื่องการ return array ใน webservice ครับ
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
|
|
Create Date : |
2012-05-17 |
|
Download : |
No files |
|
Sponsored Links |
|
|
|
|
|
|