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

Porque meu curl não executa a requisição para os Correios?


Mucharski

Pergunta

Estou tentando há dias fazer uma requisição de preço e prazo de entrega para o WS dos Correios. Acontece que o meu php não executa de jeito nenhum a requisição, e o pior é que se eu abrir a URL diretamente no navegador, o XML aparece normalmente, e não sei porque motivo o php não consegue "puxar" esse mesmo xml.

Vou colocar o código caso alguém queira testar ou verificar se estou fazendo algo errado:

Correios.php

<?php class Correios
{
    public $nCdEmpresa, $sDsSenha, $servico, $cepOrigem, $cepDestino, $peso, $formato = '1', $comprimento, 
  $altura, $largura, $diametro, $maoPropria = 'N', $valordeclarado = '0', $avisoRecebimento = 'N', $retorno = 'xml';

    public function calc()
    {
        $cURL = curl_init(sprintf(
            'ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo?nCdEmpresa=%s&sDsSenha=%s&nCdServico=%s&sCepOrigem=%s&sCepDestino=%s&nVlPeso=%s
            &nCdFormato=%s&nVlComprimento=%s&nVlAltura=%s&nVlLargura=%s&nVlDiametro=%s&sCdMaoPropria=%s&nVlValorDeclarado=%s
            &sCdAvisoRecebimento=%s&StrRetorno=%s HTTP/1.1',
            $this->nCdEmpresa,
            $this->sDsSenha,
            $this->servico,
            $this->cepOrigem,
            $this->cepDestino,
            $this->peso,
            $this->formato,
            $this->comprimento,
            $this->altura,
            $this->largura,
            $this->diametro,
            $this->maoPropria,
            $this->valordeclarado,
            $this->avisoRecebimento,
            $this->retorno
        )); // Define a opção que diz que você quer receber o resultado encontrado 
        curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); // Executa a consulta, conectando-se ao site e salvando o resultado na variável $string
        $string = curl_exec($cURL); // Encerra a conexão com o site 
        curl_close($cURL);
        $xml = simplexml_load_string($string);

        if ($xml->Erro != '') {
            $this->error = array($xml->cServico->Erro, $xml->cServico->MgsErrro);
            return false;
        } else {
            return $xml;
        }
    }
    public function error()
    {
        if (is_null($this->error)) {
            return false;
        } else {
            return $this->error;
        }
    }
}

Agora o Script que estou chamando para testar a requisição e não funciona:

$frete = new Correios();

$frete->servico = "04510"; // 04510 para PAC e 04014 para SEDEX
$frete->cepOrigem = "82220020";
$frete->cepDestino = "08090284";
$frete->peso = "0.5";
$frete->comprimento = "50";
$frete->altura = "5";
$frete->largura = "20";
$frete->diametro = "0";

$calc = $frete->calc();

if (!$calc) {
    $error = $frete->error();
    echo $error[1];
} else {
    var_dump($calc);
}

 

Já habilitei o curl no php.ini e testei em uma hospedagem, continua não me retornando nada

Editado por Mucharski
Complementando a pergunta
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...