HTTP Error: no data present after HTTP headers (SOAP + PHP)

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!


4 Respostas para “HTTP Error: no data present after HTTP headers (SOAP + PHP)”

  1. diego Disse:

    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

  2. Ary Disse:

    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

  3. Laion Custodio Disse:

    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

  4. Blefe Disse:

    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.

Deixe um comentário