Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ericsson Berg

Webservice nusoap problema Unsupported HTTP response status 404 Not Fo

Recommended Posts

Olá!!

Galera tô começando a estudar o webservice Nusoap e estou com um problema na requisição.

O seguinte, no computador do meu trabalho o webservice funcionada e dá o retorno, já no meu notebook ele dá o seguinte erro

"HTTP Error: Unsupported HTTP response status 404 Not Found (soapclient->response has contents of the response)"

As versões do php e apache são as mesmas.

Segue código:

<?php
//Cliente.php
include('lib/nusoap.php');


$cliente = new nusoap_client('http://localhost/webservice/server.php?wsdl');

    
$parametros = array('nome'=>'Teste',
                    'idade'=>51);


$resultado = $cliente->call('exemplo', $parametros);

    
  if ($cliente->fault){
        echo "Falha<pre>".print var_dump($resultado)."</pre>";
    } else {
        $err = $cliente->getError();
        if ($err){
            echo "Erro<pre>".$err."</pre>";
        } else {
            echo utf8_encode($resultado);
        }
    }


echo utf8_encode($resultado);     	
?>
<?php
//Servidor.php
include('lib/nusoap.php');


$servidor = new nusoap_server();


$servidor->configureWSDL('urn:Servidor');
$servidor->wsdl->schemaTargetNamespace = 'urn:Servidor';


function exemplo($nome, $idade){
        return($nome.' -> '.$idade);
}


$servidor->register(
        'exemplo',
        array('nome'=>'xsd:string',
                        'idade'=>'xsd:int'),
        array('retorno'=>'xsd:string'),
        'urn:Servidor.exemplo',
        'urn:Servidor.exmeplo',
        'rpc',
        'encoded',
        'Apenas um exemplo utilizando o NuSOAP PHP.'
);


$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$servidor->service($HTTP_RAW_POST_DATA);

?>

o mesmo código e o mesmo arquivo nusoap são os mesmos.

Alguém sabe dizer pq no not não funciona?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se está estudando, já começou errado...

Nusoap é uma biblioteca desenvolvida para o PHP 4. Para o 5 em diante, utilize SOAP do PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, postei este erro com NUSOAP, mas o SOAP também dá erro,

Fatal error: Uncaught SoapFault exception: [HTTP] Could not connect to host in C:\wamp\www\sangewebservice\cliente.php:16 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://sange:90...' 'urn://sange:909...', 1, 0) #1 C:\wamp\www\sangewebservice\cliente.php(16): SoapClient->__soapCall('getStudentName', Array) #2 C:\wamp\www\sangewebservice\service.php(6): client->getName(Array) #3 {main} thrown in C:\wamp\www\sangewebservice\cliente.php on line 16

Se comecei errado em um, no outro dá problema do mesmo jeito.

Testei no meu computador do trabalho e funciona, mas no meu notebook não, e já até reinstalei o wamp.

Sem sucesso.

Se alguém poder me ajudar, pois precisava que este webservice funcionasse no meu notebook para poder desenvolver um projeto pessoal.

Segue código com SOAP.

server,php

<?php

// Cria a classe
class server 
{
    public function __construct()
    {
        
    }
    
    public function getStudentName($id_array)
    {
        return 'Sam';
    }

} // final da classe

    $params = array('uri' => "http://sange:9090/sangewebservice/server.php");
    $server = new SoapServer(null, $params);
    $server->setClass('server');
    $server->handle();
        
?>

cliente.php

<?php


class client
{
    public function __construct() 
    {
        $params = array('location' => 'http://sange:9090/sangewebservice/server.php',
                        'uri' => 'urn://sange:9090/sangewebservice/server.php',
                        'trace' =>  1);
        $this->instance = new SoapClient(NULL,$params );
    }
    
    public function getName($id_array)
    {
        return $this->instance->__soapCall('getStudentName', $id_array);
    }
}
        
$client = new client;

     
?>

service.php

<?php

include './cliente.php';

$id_array = array('id' => '1');

echo $client->getName($id_array);

?>

Galera ajudae!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se em um computador funciona e no outro não, é conectividade. Vide ao seu erro:

[HTTP] Could not connect to host in

Você consegue visualizar o WSDL acessando direto de um navegador (provavelmente não conseguirá no seu pc).

Outro ponto, se o endereço fornecido exibe um WSDL, use-o como primeiro parâmetro:

$client = new SoapClient('http://sange:9090/sangewebservice/server.php');
 

A URI não é necessário configurar (caso use como primeiro parâmetro). Trace é bom para visualizar os documentos de request e response.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não resolveu, já tô no desespero!!

Vou ter que chegar no extremo de formatar o meu notebook para ver se resolve isso.

Tô aqui no pc do trabalho e tanto no servidor local quanto no da empresa o script funciona.

E na bost* do meu notebook não, já estou há 3 dias tentando resolver isso e nada só tempo perdido...

Mais alguma dica antes que eu parta para o exorcismo do meu notebook??? :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo do apache - apache access log dá esse erro:

127.0.0.1 - - [18/Oct/2016:00:29:42 -0200] "GET /rest/database.php?admin HTTP/1.1" 404 10896
::1 - - [18/Oct/2016:00:29:42 -0200] "POST /REST/ HTTP/1.1" 200 279
::1 - - [18/Oct/2016:00:29:47 -0200] "GET /REST/INDEX.PHP HTTP/1.1" 200 248
127.0.0.1 - - [18/Oct/2016:00:29:49 -0200] "GET /rest/database.php? HTTP/1.1" 404 10896
::1 - - [18/Oct/2016:00:29:49 -0200] "POST /REST/INDEX.PHP HTTP/1.1" 200 279
127.0.0.1 - - [18/Oct/2016:00:29:50 -0200] "GET /rest/database.php? HTTP/1.1" 404 10896
::1 - - [18/Oct/2016:00:29:50 -0200] "POST /REST/INDEX.PHP HTTP/1.1" 200 279
127.0.0.1 - - [18/Oct/2016:00:29:52 -0200] "GET /rest/database.php?admin HTTP/1.1" 404 10896
::1 - - [18/Oct/2016:00:29:52 -0200] "POST /REST/INDEX.PHP HTTP/1.1" 200 279
::1 - - [18/Oct/2016:00:30:08 -0200] "GET /REST/INDEX.PHP HTTP/1.1" 200 248
127.0.0.1 - - [18/Oct/2016:00:30:10 -0200] "GET /rest/database.php? HTTP/1.1" 404 10896
::1 - - [18/Oct/2016:00:30:10 -0200] "POST /REST/INDEX.PHP HTTP/1.1" 200 279
127.0.0.1 - - [18/Oct/2016:00:30:11 -0200] "GET /rest/database.php?admin HTTP/1.1" 404 10896
::1 - - [18/Oct/2016:00:30:11 -0200] "POST /REST/INDEX.PHP HTTP/1.1" 200 279

Alguém tem uma dica??

Compartilhar este post


Link para o post
Compartilhar em outros sites

o erro é bem específico:

404

Ou seja, não encontrado.

Detalhe, para o linux, "REST" é diferente de "rest". Como pode ver nas suas URL's:

Status 200, encontrado:

"POST /REST/INDEX.PHP HTTP/1.1" 200

Status 404, não encontrado:

"GET /rest/database.php?admin HTTP/1.1"

Até o momento, o seu problema é não existir as URLs que está tentando acessar. Que foi o que eu sinalizei no post #4.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, este trecho do apache access log que informei acima foi do meu pc de casa, uma outra tentativa falha, neste realmente havia digitado com caixa alta, porém fui rever o do notebook e estava tudo minúsculo, assim não teria esta diferença, ainda porque o sistema que roda tudo certo e que testei os arquivos é o do trabalho que está em linux.

O que está dando tudo errado é o meu pessoal que roda em windows.

De qualquer forma acabei de resolver, devia ser algum conflito, até erro mesmo que devo ter provocado, que lascou com meu fim de semana.

É o seguinte:

Tanto no meu pc, quanto no meu note, eu tenho hosts de outros projetos e tal, até ai tudo bem!!

No caso deste problema que eu estava tendo, toda a url a qual dava problema estava com http://localhost/webservice/server.php no apontamento interno no arquivo.

E após criar um vhost que apontou direto para a pasta do projeto,"C:\wamp\www\webservice\cliente.php, e arrumar o link nos arquivos para http://webservice/server.php, o problema foi resolvido.

Vou estudar mais sobre virtual host, porque acho que o que fiz sendo o básico deve ter ficado falho de algum forma, senão a url com localhost/projeto/server.php deveria ter funcionado e não ter dado o erro 404 como o arquivo do apache access log apontou.

Espero ajudar alguém com problemas futuros neste ponto, se é que esse caso não tenha sido tão específico assim. :)

Grabriel Heming, agradeço sua a atenção!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.