Я написал веб-службу с использованием ASP.NET (в C#), и я пытаюсь написать пример PHP-клиента с помощью NuSOAP. Где я споткнулся - примеры того, как это сделать; некоторые показывают soapval
(и я не совсем понимаю параметры - например, передаю false
как string
типов и т. д.), в то время как другие просто используют прямой array
s. Давайте скажем WSDL для моего веб-сервиса как сообщает http://localhost:3333/Service.asmx?wsdl
выглядит примерно так:Как вызвать веб-сервис C# через PHP?
POST /Service.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/webservices/DoSomething"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<DoSomething xmlns="http://tempuri.org/webservices">
<anId>int</anId>
<action>string</action>
<parameters>
<Param>
<Value>string</Value>
<Name>string</Name>
</Param>
<Param>
<Value>string</Value>
<Name>string</Name>
</Param>
</parameters>
</DoSomething>
</soap:Body>
</soap:Envelope>
Моя первая попытка PHP выглядит так:
<?php
require_once('lib/nusoap.php');
$client = new nusoap_client('http://localhost:3333/Service.asmx?wsdl');
$params = array(
'anId' => 3, //new soapval('anId', 'int', 3),
'action' => 'OMNOMNOMNOM',
'parameters' => array(
'firstName' => 'Scott',
'lastName' => 'Smith'
)
);
$result = $client->call('DoSomething', $params, 'http://tempuri.org/webservices/DoSomething', 'http://tempuri.org/webservices/DoSomething');
print_r($result);
?>
Теперь в стороне от типа Param будучи сложным типом, который я» m довольно уверен, что моя простая попытка $array
не будет работать автоматически, я остановлюсь в своем веб-сервисе и вижу метод, который я обозначил как WebMethod
(без его переименования, его буквально DoSomething
), и видя, что аргументы являются значениями по умолчанию (int
- 0
, string
- null
и т. Д.).
Каким должен быть мой синтаксис PHP, и что мне нужно сделать, чтобы правильно передать тип Param
?
Спасибо, После этого опыта я не любил PHP. – cfeduke 2008-11-10 22:32:15