Como fazer uma chamada PHP SOAP usando a classe SoapClient

Estou acostumado a escrever código PHP, mas não uso frequentemente codificação orientada a objetos. Agora preciso interagir com o SOAP (como cliente) e não consigo obter a sintaxe correta. Eu tenho um arquivo WSDL que me permite configurar corretamente uma nova conexão usando a classe SoapClient. No entanto, não consigo fazer a chamada certa e obter os dados retornados. Eu preciso enviar os seguintes dados (simplificados):

ID do contatoNome de contatoDescrição geralMontante

Existem duas funções definidas no documento WSDL, mas eu só preciso de uma ("FirstFunction" abaixo). Aqui está o script que eu corro para obter informações sobre as funções e tipos disponíveis:

$client = new SoapClient("http://example.com/webservices?wsdl");
var_dump($client->__getFunctions()); 
var_dump($client->__getTypes()); 

E aqui está a saída que gera:

array(
  [0] => "FirstFunction Function1(FirstFunction $parameters)",
  [1] => "SecondFunction Function2(SecondFunction $parameters)",
);

array(
  [0] => struct Contact {
    id id;
    name name;
  }
  [1] => string "string description"
  [2] => string "int amount"
}

Digamos que eu queira fazer uma chamada para o FirstFunction com os dados:

ID do contato: 100Nome de Contato: JohnDescrição Geral: Barril de PetróleoQuantidade: 500

Qual seria a sintaxe correta? Eu tenho tentado todos os tipos de opções, mas parece que a estrutura de sabão é bastante flexível, então há muitas maneiras de fazer isso. Não foi possível descobrir a partir do manual ...

UPDATE 1: tentou amostra de MMK:

$client = new SoapClient("http://example.com/webservices?wsdl");

$params = array(
  "id" => 100,
  "name" => "John",
  "description" => "Barrel of Oil",
  "amount" => 500,
);
$response = $client->__soapCall("Function1", array($params));

Mas eu recebo esta resposta:Object has no 'Contact' property. Como você pode ver na saída degetTypes(), existe umstruct chamadoContact, então eu acho que de alguma forma preciso deixar claro meus parâmetros incluem os dados de contato, mas a questão é: como?

UPDATE 2: Eu também tentei essas estruturas, mesmo erro.

$params = array(
  array(
    "id" => 100,
    "name" => "John",
  ),
  "Barrel of Oil",
  500,
);

Assim como:

$params = array(
  "Contact" => array(
    "id" => 100,
    "name" => "John",
  ),
  "description" => "Barrel of Oil",
  "amount" => 500,
);

Erro nos dois casos: o objeto não possui uma propriedade 'Contato'

questionAnswers(11)

yourAnswerToTheQuestion