我正在尝试使用 .NET 的 php webservice。在 PHP 中,调用将是这样的:
// array with guest information
$extrainfo = array(
'voorletters' => 'T.e.s.t.',
'voornaam' => '',
'tussenvoegsels' => '',
'achternaam' => 'Baker',
'rekeningnummer' => '123456789',
'website' => 'www.bla.nl',
'geboortedatum' => '19-2-1985',
'telefoon_extra_restnummer' => '',
'straat' => '',
'huisnummer' => '',
'huisnummer_toevoeging' => '',
'postcode' => '',
'woonplaats' => '',
);
// add guest
$result = $client_cart->setGuest('MySessionID', 'test@test.nl',$extrainfo);
如果我使用 wsdl 在 Microsoft .NET 中生成代理,则“setGuest”操作按预期采用三个参数。一个字符串(sessionID)、一个字符串(邮件地址)和一个“对象”类型的参数(额外信息)。
我试图创建一个自定义类来传递来自.NET 的额外信息,创建一个实例,填充它并将它作为序列化对象传递,但是 PHP web 服务抱怨它需要一个数组而不是一个对象。我还尝试将客人信息作为字典传递:
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("voorletters", "T.e.s.t.");
dict.Add("voornaam", "");
dict.Add("tussenvoegsels", "");
dict.Add("achternaam", "Baker");
...
object obj = _proxyService.setGuest("MySessionID", "test@test.nl", dict.ToArray());
但随后 PHP Web 服务抱怨没有收到额外的信息。
所以我的问题是;如何使用 .NET 中生成的代理将访客信息作为参数传递?