树莓派3中的php5调用C#开发的WCF

在VS2013中用C#做了一个演示用的WCF(.net 4.0)。功能很简单,MS数据库中有张 t_demo 表,有字段ID、Col1、Col2,WCF的功能是根据ID返回一条记录。此记录被封装成一个类,类属性和表字段一一对应。

WCF被发布在 http://192.168.199.180/wcf/Service.svc

我们来测试查一条ID=4的记录。PHP代码如下:

<?php
ini_set('display_errors','On');
header('Content-Type:text/plain');

$wcfClient = new SoapClient('http://192.168.199.180/wcf/Service.svc?wsdl');

$args = array('ID'=>4);
$returnVal = $wcfClient->Select_t_demo($args);

print_r($returnVal->Select_t_demoResult->Col1);
?>

意外之喜,连中文都直接支持了。

有几个点要说明下:

1 参数对象貌似一定要定义。一开始我直接写了$returnVal = $wcfClient->Select_t_demo(4)期望返回ID=4的记录,但是死活都没有记录返回。开了个MSSQL的追踪,发现此时传入的参数是0。

2 $returnVal->Select_t_demoResult中,Result是自动加上的。

3 $args = array('ID'=>4);中,ID也不是随便起的,必须和WCF发布出来的参数保持一致。

把这个对象作为参数传入也很简单,但是同样要注意参数名称一致性的问题:

<?php

ini_set('display_errors','On');
header('Content-Type:text/plain');
$wcfClient = new SoapClient('http://192.168.199.180/wcf/Service.svc?wsdl');

$phpObj = new stdClass();
$phpObj->Col1 = 'aabb';
$phpObj->Col2 = time();

$args = array('obj'=>$phpObj);
$returnVal = $wcfClient->Insert_t_demo($args);
print_r($returnVal->Insert_t_demoResult);
?>

当WCF返回一个List<对象>时,可以这样还原:

<?php

ini_set('display_errors','On');
header('Content-Type:text/html');
$wcfClient = new SoapClient('http://192.168.199.180/wcf/Service.svc?wsdl');

$returnVal = $wcfClient->FillList_t_demo();

$list = $returnVal->FillList_t_demoResult;
foreach ($list as $rows)
{
        foreach ($rows as $row)
        {
                print_r($row->ID. '<br/>');
        }
}
?>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ki1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值