首页 新闻 会员 周边

[PHP开发] php 调用 .NET 的WCF 问题【SOS】

0
悬赏园豆:20 [已解决问题] 解决于 2015-04-17 17:44
各位大神,小弟.NET开发3年多
突然转PHP,好多不明白,求救

我写了个最简单的WCF, 具体方法如下
public string GetData(string value)
        {
            return "You entered is : " + value;
        }


然后在PHP中去调用
<?php
/* Step1:初始化SoapClient对象 */
$wcfURL = 'http://192.168.3.102/Service1.svc?wsdl';
$wcfClient = new SoapClient ( $wcfURL );
$result = $wcfClient->GetData(312);
echo $result->GetDataResult;
echo '<br>';
print_r ( $result );


返回的结果是


You entered is : 
stdClass Object ( [GetDataResult] => You entered is : ) 


我在网上搜索了很久,PHP调用WCF的资料少又少,求各位大神指教,这个该怎么弄???
刚刚入门PHP一周,求别嘲讽
Lionel Andrés Messi的主页 Lionel Andrés Messi | 初学一级 | 园豆:82
提问于:2015-04-17 16:41
< >
分享
最佳答案
1
收获园豆:20
dudu | 高人七级 |园豆:31048 | 2015-04-17 16:51

大神发话,万分荣幸,我也是参照那篇来做的,刚刚又仔仔细细的查看了一次,

我又写了个不带参数的最简单的

public string SayHello()
{
return "Hello World";
}

然后在PHP端调用 

$wcfURL = 'http://192.168.3.102/Service1.svc?wsdl';
$wcfClient = new SoapClient ( $wcfURL );

$result1 = $wcfClient->SayHello ();
print_r ( $result1 );
echo $result1->SayHelloResult;

输出如下

stdClass Object ( [SayHelloResult] => Hello World ) Hello World

 

这个说明配置是OK的,so....我木有招了

 

Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-04-17 17:00

@Lionel Andrés Messi: 问题在哪里?

dudu | 园豆:31048 (高人七级) | 2015-04-17 17:01

@dudu: 
GetData的这个方法有个参数,我在PHP代码中传入了的

$result = $wcfClient->GetData(312);

但是无法输出

echo $result->GetDataResult;//输出的是You entered is : 如果正确的话,应是输出You entered is :312

Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-04-17 17:03

@Lionel Andrés Messi: 参数类型是string,你传的是int,试试 $wcfClient->GetData("312"); 

dudu | 园豆:31048 (高人七级) | 2015-04-17 17:06

@dudu: 

还是不行~~~

以及再次更改WCF服务,并且各种重启,还是不行

Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-04-17 17:14

@Lionel Andrés Messi: 

改为这样试试:

$args = array('text' => '312');
$wcfClient->GetData($args);
dudu | 园豆:31048 (高人七级) | 2015-04-17 17:20

@dudu:  多谢大神~

<?php
/* Step1:初始化SoapClient对象 */
$wcfURL = 'http://192.168.3.102/Service1.svc?wsdl';
$wcfClient = new SoapClient ( $wcfURL );
$args = array (
'text' => '312'
);
$result = $wcfClient->GetData ( $args );
echo $result->GetDataResult;
echo '<br>';
print_r ( $result );

echo '<br>';

$result1 = $wcfClient->SayHello ();
print_r ( $result1 );
echo $result1->SayHelloResult;

?>

 

可以上还是不行

这是测试

我都不知道该检查哪里了...多谢大神费心

Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-04-17 17:28

@Lionel Andrés Messi: 建议先用C#客户端调用一下,看能不能正常调用

dudu | 园豆:31048 (高人七级) | 2015-04-17 17:29

@Lionel Andrés Messi: 你抓个包看下就清楚了。

Launcher | 园豆:45045 (高人七级) | 2015-04-17 17:30

@dudu: 稍等

dudu | 园豆:31048 (高人七级) | 2015-04-17 17:31

@dudu: 把text改为value,对应方法的参数名称:

$args = array('value' => '312');
$wcfClient->GetData($args);
dudu | 园豆:31048 (高人七级) | 2015-04-17 17:32

@dudu: 

不行

使用C#可以换调用,会不会是PHP版本问题呢,我的是

5.2.3

Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-04-17 17:37

@Lionel Andrés Messi: 你现在WCF服务端方法的参数名称究竟是什么?从测试截图看,是不是变成t了?

$args = array('t' => '312');
$wcfClient->GetData($args);

 

dudu | 园豆:31048 (高人七级) | 2015-04-17 17:40

@dudu: 谢大神!!!!!!!!!万分感谢!!!!!!!!!就是这个问题,就是这个问题!!!

Lionel Andrés Messi | 园豆:82 (初学一级) | 2015-04-17 17:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册