gpt4 book ai didi

.net - 带有 PHP 客户端的 WCF 服务 - 复杂类型作为参数不起作用

转载 作者:可可西里 更新时间:2023-11-01 00:28:19 25 4
gpt4 key购买 nike

我有一个包含三种方法的 WCF 服务。其中两个方法返回自定义类型(这些按预期工作),第三个方法将自定义类型作为参数并返回一个 bool 值。当通过 PHP soap 客户端调用第三个方法时,它会返回“对象引用未设置为对象的实例”异常。

示例自定义类型:

_公开课MyClass

Private _propertyA As Double
<DataMember()> _
Public Property PropertyA() As Double
Get
Return _propertyA
End Get
Set(ByVal value As Double)
_propertyA = value
End Set
End Property

Private _propertyB As Double
<DataMember()> _
Public Property PropertyB() As Double
Get
Return _propertyB
End Get
Set(ByVal value As Double)
_propertyB = value
End Set
End Property

Private _propertyC As Date
<DataMember()> _
Public Property PropertyC() As Date
Get
Return _propertyC
End Get
Set(ByVal value As Date)
_propertyC = value
End Set
End Property

下课

方法:

公共(public)函数 Add(ByVal param As MyClass) As Boolean Implements IService1.Add ' ...结束函数

PHP 客户端调用:

$client->Add(array('param'=>array('属性A' => 1,'属性B'=> 2,'PropertyC' => "2009-01-01")));

WCF 服务在 .Net 客户端上运行良好,但我是 PHP 新手,无法正常运行。

是否可以在 PHP 中创建“MyClass”的实例。

如有任何帮助,我们将不胜感激。

注意:我使用的是 PHP 5(适用于 Windows 的 XAMPP 1.7.0)。

谢谢

马特

最佳答案

为了测试,我不再设置 XAMPP,但这里有一些示例代码:

PHP:

$wsdl = "https://....../ServiceName.svc?wsdl";
$endpoint = "https://...../ServiceName.svc/endpointName";
$client = new SoapClient($wsdl, array('location'=>$endpoint));

$container = new stdClass();

$container->request->PropertyA = 'Test 1';
$container->request->PropertyB = 'Test 2';
$container->request->PropertyC = '05/10/2010';

$response = $client->ServiceMethodA($container);

request 是网络服务期望的参数名称。

如果您有一个引用了其他自定义类型的自定义类型,您可以按如下方式设置这些属性:

$container->request->OtherCustomType->Property1 = 'Test';

希望对您有所帮助。

关于.net - 带有 PHP 客户端的 WCF 服务 - 复杂类型作为参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/488497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com