Opa!
estava eu acessando um web service e precisei passar um objeto por webService.
E perdi algumas hora pra resolter um problema! Eu não consiguia enviar (em PHP, usando NuSoap) um objeto para o webServices!
Tentei de várias formas até que consegui!
então lá vai:
aqui um exemplo que Request que deveria ser feito para se inserir o objeto
POST /SafeVenue/WebInterface.asmx HTTP/1.1
Host: servidor.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://192.1.2.3/SafeVenue/InsertRedListEntry"
<?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>
<InsertRedListEntry xmlns="http://192.1.2.3/SafeVenue/">
<redListEntry>
<TicketID>long</TicketID>
<FailureReasonID>int</FailureReasonID>
</redListEntry>
</InsertRedListEntry>
</soap:Body>
</soap:Envelope>
Para chamar enviar o objeto, no PHP, fiz assim:
<?php
/**
* Enviando Objeto via WebService com NuSoap
*
* @author Gregui Shigunov
* @since 03/10/2007
*/
require_once('nusoap/nusoap.php');
$wsdl = "http://servidor/SafeVenue/WebInterface.asmx?WSDL";
$client = new soapclient($wsdl, true);
$client->soap_defencoding = 'UTF-8';
$client->useHTTPPersistentConnection();
$err = $client->getError();
if ($err) {
echo '<pre>PROBLEMAS AO ACESSAR O WEBSERVICE ' . $err . '</pre><br>';
}
$objeto = '<InsertRedListEntry xmlns="http://192.1.2.3/SafeVenue/">
<redListEntry>
<TicketID>12345</TicketID>
<FailureReasonID>1</FailureReasonID>
</redListEntry>
</InsertRedListEntry>';
//detalhe em vermelho, sem isso não funciona
$result = $client->call('InsertRedListEntry', $objeto, "http://192.1.2.3/SafeVenue/");
echo "Resultado------------------------<br>";
print_r($result);
echo "------------------------";
if ($client->fault) {
echo '<h2>Fault</h2><pre>'; print_r($result);
echo '</pre>';
} else {
$err = $client->getError();
if ($err) {
echo '<h2>(Autenticacao)</h2><pre>' . $err . '</pre>';
}
}
echo '<br><br><h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->debug_str, ENT_QUOTES) . '</pre>';
?>
Qualquer coisa é só dar um toque pessoal!

Add to del.icio.us
29 29UTC Janeiro 29UTC 2008 às 4:10 pm |
Esse erro está acontecendo comigo, mas não entendi muito bem o que você propôs. O que viria a ser esse parametro “http://192.1.2.3/SafeVenue/“);”? Teria como trocarmos email? obrigado
1 01UTC Maio 01UTC 2008 às 1:45 pm |
Ola!! estou precisando de ajuda, pós tenho um servidor java e quero comunicar com um cliente php. se der para ajudar entra em contato por email. VLW
27 27UTC Outubro 27UTC 2008 às 2:45 pm |
Criei um server WebService em .Net, usando c#, e tenho que utilizar os serviços deste WebService e um cliente php, mas o problema é o seguinte:
-Meu WebService C# retorno um objeto com seus atributos e métodos, preciso no PHP acessar os métodos deste objeto, por enquanto eu só tenho acesso aos atributos aos metodos naum.
Se tiver uma luz me avise……..valeuuuuuu
30 30UTC Abril 30UTC 2009 às 5:47 pm |
Recebi o mesmo erro ao tentar enviar dados de uma query feita pelo ADODB no Postgres (usando tipos complexos do nuSoap). Com o mysql não acontece. A solução é usar as bibliotecas padrão do PHP como o PG ou o PDO.