您的位置:首页 > 编程语言 > PHP开发

webservice 之一 php SOAP

2016-07-24 18:48 585 查看
SoapClient类


这个类用来使用Web services。SoapClient类可以作为给定Web services的客户端。

它有两种操作形式:

WSDL 模式

Non-WSDL 模式

服务器端

include_once '../webservice/nusoap.php';

set_time_limit(0);
//可传递给wishery的父分类
$cat_array = array('2408','2279','2079','1926','1922','1921','1923','2391','1927');

$server = new soap_server();
$server -> soap_defencoding = 'UTF-8';
$server -> decode_utf8 = false;
$server -> xml_encoding = 'UTF-8';
$server -> configureWSDL( 'wishery_wsdl','' );
$server -> wsdl -> schemaTargetNamespace = 'urn:wishery_wsdl';

$server -> wsdl -> addComplexType( 'data_array','complexType','array','','SOAP-ENC:Array',array(),
array( array( 'ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:data_array' ) )
);

$server -> register( 'get_globalegrow_sku',
array(
'start'=>'xsd:int',
'limit'=>'xsd:int',
'sku'=>'xsd:string',
'identity' => 'xsd:string'
),
array(
'code'=>'xsd:string',
'data'=>'tns:data_array',
'msg'=>'xsd:string'
),
'urn:wishery_wsdl',
'urn:wishery_wsdl#get_globalegrow_sku',
'rpc',
'encodeed',
'wishery Web Service Interface'
);

function get_globalegrow_sku(   $start = "0" ,$limit="200",$sku = "",$identity ){
global $db;

if( $identity != IDENTITY ){
$data['code'] = '1000';
$data['msg'] = 'IDENTITY ERROR';
}else{
$cat_ids = rtrim(get_wishery_cats(),',');
$rs = $db->arrQuery("select goods_name,goods_sn,goods_weight,goods_desc from eload_goods where cat_id in (".$cat_ids.") limit ".$start.",".$limit);
foreach ($rs as $key => $value) {
$rs[$key]['goods_desc'] = str_replace('http://ebay.davismicro.com.cn', '', $value['goods_desc']);
$rs[$key]['goods_desc'] = htmlspecialchars($value['goods_desc']);
}

foreach ($rs as $key => $value) {
$suggest = $db->arrQuery("select country,fixed_price from eload_goods_suggest_price where goods_sn='{$value['goods_sn']}' and fixed_price != ''");
if(count($suggest)>0){
$suggest_array =  $suggest;
}else{
$suggest_array = array();
}
$rs[$key]['suggest'] = $suggest_array;
}

foreach ($rs as $key => $value) {
$cdn_url = 'http://cdn.ovonni.com/';
$goods_id = $db -> getOne("select goods_id from eload_goods where goods_sn='{$value['goods_sn']}'");
$goods_gallery = $db->arrQuery("select img_original from eload_goods_gallery where goods_id =".$goods_id." and img_original != ''");
$gallery = array();
if(count($goods_gallery) > 0){
foreach ($goods_gallery as $key => $value) {
$gallery['img_url'] = $cdn_url.$value['img_original'];
}
}
$rs[$key]['img_gallery'] = $gallery;
}
$data['code'] = '0';
$data['data'] = $rs;
}
return $data;
}


客户端访问

include_once '../webservice/nusoap.php';

//新建一个soap客户端,调用服务端提供的wsdl
$url_2 = "http://192.168.3.4:85/api/wishery.php"; //测试地址

$client = new soapclient($url_1);

//查看一下是不是报错
$err = $client->getError();

if ($err) {
//显示错误
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
}

//要向服务端要传的参数
$person = array('start' => '0', 'limit' => '100', 'sku' => '', 'identity'=>'******************');

//调用服务端的方法
$result = $client->call('get_globalegrow_sku', $person);

print_r($result);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php web service soap