|
|
|
สร้าง webservice ด้วย PHP แล้ว Error ว่า Fatal error: Uncaught SoapFault exception |
|
|
|
|
|
|
|
ผมสร้าง webservice เพื่อส่งค่าจากฐานข้อมูล mssql 2005 แล้วฟ้อง error ว่า
Code
Fatal error: Uncaught SoapFault exception: [SOAP-ENV:Server] SOAP-ERROR: Encoding: string '\xb8...' is not a valid utf-8 string in D:\xampp\htdocs\WebService\soap_hr_client.php:19 Stack trace: #0 [internal function]: SoapClient->__call('getEmployee', Array) #1 D:\xampp\htdocs\WebService\soap_hr_client.php(19): SoapClient->getEmployee('571490') #2 {main} thrown in D:\xampp\htdocs\WebService\soap_hr_client.php on line 19
code ของ server
<?php
require 'config.php';
require 'database.php';
function getEmployee($empn){
global $host,$username,$password,$dbname;
$db = new database($host, $username, $password);
$db->selectDB($dbname);
$sql = 'select name from view_trancen4111 where empn = "'.$empn.'"';
$rs = $db->query($sql);
$result = mssql_fetch_object($rs);
$db->close();
return $result->name;
}
$server = new SoapServer(null,array('uri'=>'http://localhost/webservice'));
$server->addFunction('getEmployee');
$server->handle();
?>
code ของ client
<?php
$client = new SoapClient(null, array(
"location" => "http://127.0.0.1/webservice/soap_hr_server.php",
"uri" => "http://127.0.0.1/webservice",
"trace" => 1));
print $client->getEmployee("571490");
?>
ฝากความหวังไว้กับผู้รู้ด้วยนะครับ
ปล. ถ้าใช้เป็น mysql สามารถทำงานได้ปกติ แต่หน้างานผมจริงๆ ต้องใช้ mssql นะครับ
Tag : PHP, Ms SQL Server 2005, CakePHP
|
|
|
|
|
|
Date :
2012-09-25 23:07:41 |
By :
same |
View :
2102 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองใช้การ iconv() เป็น UTF-8 ดูก่อนครับ
|
|
|
|
|
Date :
2012-09-26 06:46:08 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมลองแล้วนะครับ iconv() หนะไม่ error แต่ ไม่มีอะไรโชว์เลยคับ หรือว่าผมใช้ไม่เป็นหนะ
Code (PHP)
<?php
require 'config.php';
require 'database.php';
function getEmployee($empn){
global $host,$username,$password,$dbname;
$db = new database($host, $username, $password);
$db->selectDB($dbname);
$sql = 'select name from view_trancen4111 where empn = "'.$empn.'"';
$rs = $db->query($sql);
$result = mssql_fetch_object($rs);
$result = iconv('UTF-8','TIS-620',$result);
$db->close();
return $result->name;
}
$server = new SoapServer(null,array('uri'=>'http://127.0.0.1/webservice'));
$server->addFunction('getEmployee');
$server->handle();
?>
|
|
|
|
|
Date :
2012-09-26 18:05:14 |
By :
omegat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คุณลอง echo หรือ return อะไรแบบง่าย ๆ ดูก่อนครับ ว่ามันส่งค่าได้หรือเปล่าครับ
|
|
|
|
|
Date :
2012-09-27 09:38:36 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<?php
require 'config.php';
require 'database.php';
function getEmployee($empn){
global $host,$username,$password,$dbname;
$db = new database($host, $username, $password);
$db->selectDB($dbname);
$sql = 'select name from view_trancen4111 where empn = "'.$empn.'"';
$rs = $db->query($sql);
$result = mssql_fetch_object($rs);
$db->close();
return iconv('TIS-620','UTF-8',$result->name);///////////edit
}
$server = new SoapServer(null,array('uri'=>'http://127.0.0.1/webservice'));
$server->addFunction('getEmployee');
$server->handle();
?>
ตรวจสอบดูครับว่าตกลงแล้ว character set ของ field name เป็น tis620 หรือ utf8
|
|
|
|
|
Date :
2012-09-27 20:58:14 |
By :
num |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องขอขอบพระคุณ คุณ num เป็นอย่างสูงนะครับ code ที่แนะนำมาใช้งานได้ดีทีเดียวครับ
ขอบคุณมากครับบบ ( ^____^ )
|
|
|
|
|
Date :
2012-09-28 23:28:53 |
By :
omegat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|