Ir para conteúdo
Fórum Script Brasil
  • 0

fsockopen não abre url


brunocasado

Pergunta

Galera Boa tarde!

Estou precisando em um webservice gerar um pdf toda vez que alguém o consome, igual a uma parte do sistema que temos faz, porém, temos uma tela específica para isso.

Pois bem o sistema foi construído em um framework, e o webservice está fora dele. A parte que gera o pdf, está nas dependencias do framework, por isso, o webservice tem que usar o que já foi criado anteriormente. Para isso eu pensei em utilizar o Curl, porém os servidores não estão compilados com ele. Ai pensei em utilziar fsockopen, mas o problema que está gerando uma série de erros.

Por exemplo:

Testo fsockopen("http://192.168.100.232", 80) ele dá um warning unable to connect to http://www.embrasol.com.br:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?)

Se testo sem http ele me gera um bad request HTTP/1.1 400

Ai fiz um teste bobo passando o host como http://www.google.com.br e sem passar algum header e simplesmente da o mesmo problema a cima.

Se tiro o http dá um outro erro estranho.

Além disso demora MUITOO!!!! para ele retornar mensagem alguma.

O código está assim ( Tem coisa feita ae para debugar ):

$hostname = "192.168.100.232";
//$hostname = "192.168.100.232";

        $port = 80;
        $fp = fsockopen($hostname,$port);
        $data = "login=login&password=pass";
        fputs($fp,"User-Agent: " . $_SERVER['HTTP_USER_AGENT'] . "\r\n");
        fputs($fp,"Content-type: application/x-www-form-urlencoded\r\n");
        fputs($fp,"Content-length: " . strlen($data) . "\r\n");
        //fputs($fp,"POST /~bruno.augusto/hughes/source/web/?a=open:process:Security:authUser HTTP/1.1\r\n");
        fputs($fp,"Connection: close\r\n");
        fputs($fp,$data);
        //$data = "\r\nfg_mes=02&fg_ano=2010&fg_cliente_i=85\r\n";
        //$str .= "POST /~bruno.augusto/hughes/source/web?a=open:ManReportFaturamentoGeral:gravaPdf&template=vazio HTTP/1.1\r\n";
        //$str.= "Connection: Close\r\n";
        
        
               
        $x = 0;
        while(!feof($fp)){

            $return .= fread($fp,2094);
            //$return .= fgets($fp);
            $x++;
            if($x==10) break;

        }
        fclose($fp);
        echo $return;

Mensagem do erro:

HTTP/1.1 400 Bad Request Date: Tue, 16 Nov 2010 16:15:23 GMT Server: Apache/2.2.9 (Ubuntu) PHP/5.2.6-2ubuntu4.6 with Suhosin-Patch mod_perl/2.0.4 Perl/v5.10.0 Vary: Accept-Encoding Content-Length: 226 Connection: close Content-Type: text/html; charset=iso-8859-1

Bad Request

Your browser sent a request that this server could not understand.

Editado por brunocasado
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

cara o allow_url_fopen está habilitado. Na verdade o servidor nós administramos (IP EXTERNO).

De qualquer forma resolvi habilitando o Curl nos nossos servidores.

Então o código ficou assim:

$ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,
                "http://URL");
        $data = array('login' => "login", 'password' => "password", 'usr_login' => 'login');


        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
        curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt");
        curl_setopt( $ch, CURLOPT_COOKIE, $session);
        $retorno = curl_exec($ch);
        curl_setopt($ch, CURLOPT_URL,
                "http://URL");
        $data = array('fg_mes' => $mes, 'fg_ano' => $ano, 'fg_cliente_id' => $clientId);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $retorno = curl_exec($ch);
        //echo $retorno;
        
        curl_close($ch);

está ai dica para quem precisa acessar áreas restritas via requisição HTTP.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...