Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom tarde, Pessoal
Pessoal, estou com um problema no meu PHP,esta apresentando essa mensagem de
erro" failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found ", mostra
que é nessa linha $xmlret = file_get_contents($urlsid); //Faz a conexão e pega o
retorno, em uma pagina anterior eu monto o XML, que quando comento trechos no xml
funciona normal, porem quando tiro os comentario, apresenta mensagem de erro.
$urlsid = é o meu link, aonde possui todos os paramentos do xml.
Obs: já peguei o link que ele gera, e coloquei no navegar e funcionou.
Será que alguma configuração no PHP?
Obrigado
A interpretação e simples, pois o que não entendo é que quando comento trechos do xml, funciona perfeitamente.
posta o script...
Essa é minha montagem do XML, que ficca na pagina anterior
$xml = "<sidxml>";
$xml .= "<param retorno='XML' />";
$xml .= "<sid acao='SID.SRV.ALTEMPFIL' retorno='RET_ALTEMPFIL'>";
$xml .= "<param nome='CODEMP' valor='$codemp' />";
$xml .= "<param nome='CODFIL' valor='$codfil' />";
$xml .= "</sid>";
$xml .= "<sid acao='SID.PED.GRAVAR' retorno='RET_NUMPED'>";
$xml .= "<param nome='CODCLI' valor='$codcli' />";
$xml .= "<param nome='CODREP' valor='$codrep' />";
$xml .= "<param nome='TNSPRO' valor='$codtns' />";
$xml .= "<param nome='CODCPG' valor='$codcpg' />";
$xml .= "<param nome='DATEMI' valor='$datemi' />";
$xml .= "<param nome='PEDCLI' valor='$pedcli' />";
$xml .= "<param nome='CODFPG' valor='$codfpg' />";
$xml .= "<param nome='SITPED' valor='$sitped' />";
$xml .= "<param nome='CODVEN' valor='$codger' />";
$xml .= "<param nome='CIFFOB' valor='$ciffob' />";
$xml .= "<param nome='USU_CLIENT' valor='$client' />";
$xml .= "<param nome='USU_CODIFP' valor='$codifp' />";
$xml .= "<param nome='USU_TIPENT' valor='$tipent' />";
$xml .= "<param nome='USU_FORIFP' valor='$forifp' />";
/*$xml .= "<param nome='USU_ANXLAY' valor='$anxlay' />";
$xml .= "<param nome='USU_ANXAMO' valor='$anxamo' />";
$xml .= "<param nome='USU_ANXCLI' valor='$anxcli' />";
$xml .= "<param nome='USU_ANXDIS' valor='$anxdis' />";
$xml .= "<param nome='USU_ANXCDR' valor='$anxcdr' />";
$xml .= "<param nome='USU_ANXCRO' valor='$anxcro' />";
$xml .= "<param nome='USU_ANXEMA' valor='$anxema' />";
$xml .= "<param nome='USU_ANXOUT' valor='$anxout' />";
$xml .= "<param nome='USU_TIPPED' valor='$tipped' />";
$xml .= "<param nome='USU_PEDITM' valor='$peditm' />";*/
if (!empty($codroe)) {
$xml .= "<param nome='CODROE' valor='$codroe' />";
}
$xml .= "<param nome='SEQROE' valor='$seqrot' />";
$xml .= "</sid>";
$xml .= "<sid acao='SID.PED.GRAVARPRODUTO'>";
$xml .= "<param nome='NUMPED' valor='@RET_NUMPED' />";
$xml .= "<param nome='CODPRO' valor='$codpro' />";
$xml .= "<param nome='CODDER' valor='$codder' />";
$xml .= "<param nome='QTDPED' valor='$qtdite' />";
$xml .= "<param nome='PREUNI' valor='$preuni' />";
$xml .= "<param nome='TNSPRO' valor='$codtns' />";
$xml .= "<param nome='PEDCLI' valor='$pedcli' />";
$xml .= "<param nome='DATENT' valor='$datent' />";
$xml .= "<param nome='RESEST' valor='$resest' />";
$xml .= "<param nome='CODCCU' valor='$CodCcu' />";
$xml .= "</sid>"; $xml .= "<sid acao='SID.PED.GRAVAROBSERVACAO'>";
$xml .= "<param nome='NUMPED' valor='@RET_NUMPED' />";
$xml .= "<param nome='OBSPED' valor='$obsvet[$i]' />";
$xml .= "<param nome='SITOBS' valor='$sitobs' />";
$xml .= "<param nome='CODMOT' valor='$motobs' />";
$xml .= "</sid>";
}
}
if($obscml != ""){
$xml .= "<sid acao='SID.PED.GRAVAROBSERVACAO'>";
$xml .= "<param nome='NUMPED' valor='@RET_NUMPED' />";
$xml .= "<param nome='OBSPED' valor='$obscml' />";
$xml .= "<param nome='SITOBS' valor='$sitobs' />";
$xml .= "<param nome='CODMOT' valor='$motobs' />";
$xml .= "</sid>";
}
$xml .= "<sid acao='SID.SRV.REGRA'>";
$xml .= "<param nome='numreg' valor='125' />";
$xml .= "<param nome='ecodemp' valor='$codemp' />";
$xml .= "<param nome='ecodfil' valor='$codfil' />";
$xml .= "<param nome='enumped' valor='@RET_NUMPED' />";
$xml .= "<param nome='ecodifp' valor='$codifp' />";
$xml .= "</sid>";nessa pagina tambem monto o link que seria http:\\ipdoservidor\...\..\.
Esse script é aonde que apresenta o erro
//Busca o XML e o Link para a ação no SID
$lnksid = $_POST['lnksid']; //Link SID
$xmlsid = rawurlencode(stripslashes($_POST['xmlsid']));//XML com os dados do Pedido*/
$urlsid = $lnksid . $xmlsid; //Link usado na comunicação
//Faz um envio via GET no SID e pega seu retorno buscando o número do Pedido
echo $urlsid;
$xmlret = file_get_contents($urlsid); //Faz a conexão e pega o retorno
$strret = converte_retorno_sid($xmlret); //Pega o retorno da comunicação e joga na função que coverte para string
//Imprime a mensagem de confirmação na tela
echo "Pedido: ";
echo "$strret<br><br><br><br>";
echo "Retorno completo da efetivação:";
echo "<br>$xmlret";
Esse erro pode ser algum problema no servidor aonde esta instalado o PHP?, Pois foi trocado o servidor.
posta o script
posta o script, tenho certeza que seu script se resume so ao xml, se tiver senhas, as esconda com XXX ou algo do tipo, precisa-se olhar o script inteiro...
É complicado ajudarmos sem muitas informações. Vamos dar alguns tiros no escuro, por enquanto...
Se puder ser feita uma requisição via POST, nesse caso é melhor do que passar o XML INTEIRO via GET. Como queries tem limite de tamanho (255 caracteres se não me engano), pode ser esse o problema.
Esse XML, precedido por:
header( 'Content-type: text/xml;utf-8' );
Se ecoado resulta num XML válido? No Firefox, XML's inválidos aparecem com fundo amarelo e o erro destacado em vermelho...
duas coisas
url montada errada ou
SERVER_REQUEST_URI_TO_LARGE, e no servidor não teria uma página para esse erro, e retorna 404
enviar com file_get_contents é coisa de criança, tem que usar uma biblioteca forte
o servidor é seu, seu digo se você tem acesso
se o sevidor não for seu você pode entrar como google bot, objetivo seria obter resultados que só o gbot teria e assim localizar o problema em um minuto
uma duvida, como se usa este google bot?
>
uma duvida, como se usa este google bot?
você precisa ter conhecimento em python, mais caso o nosso amigo queira, posso fazer aqui com uma biblioteca bacana php, rápido e potente para o que ele quer
poxa nana, agracie-nos com o seu conhecimento...
allow_url_fopen => está em ON?
você pode tentar usar um Agent diferente tb.
:seta: http://php.net/manual/pt_BR/function.file-get-contents.php
file_get_contents() é o método preferível para ler o conteúdo de um arquivo em uma string. Ela usa técnicas de mapeamento de memória suportadas pelo seu SO para melhorar a performance.
:thumbsup:
Bom Dia
Pessoal, foi resolvido, o problema estava no servidor IIS, foi feito um contato com terceiro e resolveu.
Muito Obrigado pela ajuda
Simples interpretação da mensagem obtida. Not found, significa que o URL que você informou não existe OU por algum motivo o servidor retornou um erro do tipo 404.