Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problemas em fazer consultas 2 dias! #344

Closed
tiagobatistaa opened this issue May 16, 2019 · 14 comments
Closed

Problemas em fazer consultas 2 dias! #344

tiagobatistaa opened this issue May 16, 2019 · 14 comments
Labels

Comments

@tiagobatistaa
Copy link

tiagobatistaa commented May 16, 2019

Alguém esta com problemas no WS? estou a 2 dias parado.

504 Gateway Time-out
nginx/1.6.2

preparo todos os paramentros quando faço envio $phpSigep->calcPrecoPrazo($params);
erro Time-out

Parms:

object(PhpSigep\Model\CalcPrecoPrazo)#21 (9) {
["accessData":protected]=>
object(PhpSigep\Model\AccessDataHomologacao)#22 (11) {
["servicosAdicionais":protected]=>
NULL
["ajustarDimensaoMinima":protected]=>
bool(true)
["_failIfAtributeNotExiste":protected]=>
bool(true)
}

@jdgrieco
Copy link

@tiagobatistaa, também está acontecendo para mim.

Infelizmente é o padrão de qualidade dos Correios

@tiagobatistaa
Copy link
Author

@tiagobatistaa, também está acontecendo para mim.

Infelizmente é o padrão de qualidade dos Correios

Ufa hehe ja estava começando a fazer do 0 no xml kkk

@tiagobatistaa tiagobatistaa changed the title Problemas em fazer consulta 2 dias! Problemas em fazer consultas 2 dias! May 16, 2019
@alecshoppe
Copy link

Querendo me livrar dessas APIs, já é a 3 ou 4 vez nesses últimos 2 anos que tem problema por parte dos Correios. Não da pra confiar em deixar uma plataforma consultar nisso e ainda usa um meio de comunicação obsoleto de 2005. O jeito é usar tabela de cep x peso x preço.

@mathmarques
Copy link
Contributor

O problema está em algumas portas dos servidores do Correios utilizados no wsdl: http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL
No final desse arquivo possui um: <wsdl:service name="CalcPrecoPrazoWS"> que informa a URL da endpoint (ela varia entre as portas: 80, 8080, 8081 e 8082 randomicamente, atualize a página para ver) e somente a porta 80 está funcionando. Porém o Soap do PHP faz cache do wsdl e se ele pegou a porta incorreta, vai ficar dando erro.

A solução aqui foi implementar uma requisição POST direto para: http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo

@jdgrieco
Copy link

@mathmarques, consegue detalhar o que você fez?

@tiagobatistaa
Copy link
Author

A solução aqui foi implementar uma requisição POST direto para: http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo

fale mais sobre?

@mathmarques
Copy link
Contributor

mathmarques commented May 16, 2019

@jdgrieco e @tiagobatistaa
É possivel ver aqui: http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?op=CalcPrecoPrazo os outros métodos que essa endpoint aceita.
Mas basicamente é enviar os mesmos argumentos do SOAP via POST (lembrar do Content-Type: application/x-www-form-urlencoded) para http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrecoPrazo

Repare que o XML resultante é um pouco diferente, pois não possui o soap:Envelope e soap:Body. Retorna um <cResultado> com o <Servicos> como filho. É possível utilizar essa mesma lógica para o parse dos Servicos.

@tiagobatistaa
Copy link
Author

Pessoal achei uma solução bem simples:
@jdgrieco e @Alexmacha

Dentro do arquivo:
http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL
Conforme o @mathmarques falou tem as linhas:

<http:address location="http://ws.correios.com.br:8081/calculador/CalcPrecoPrazo.asmx"/>
<http:address location="http://ws.correios.com.br:8081/calculador/CalcPrecoPrazo.asmx"/>

Minha solução temporária:
Salvei o xml http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?WSDL em um local do meu servidor, e alterei essas linhas para:

<http:address location="http://ws.correios.com.br:80/calculador/CalcPrecoPrazo.asmx"/>
<http:address location="http://ws.correios.com.br:80/calculador/CalcPrecoPrazo.asmx"/>  

Então no arquivo src\PhpSigep\Config.php
alterei a const WSDL_CAL_PRECO_PRAZO = "LOCAL_DO_MEU_SERVIDOR_COM_PORTA_80"

plin plin e a luz voltou a brilhar.

@jdgrieco
Copy link

jdgrieco commented May 16, 2019

@tiagobatistaa, não precisa mexer no código da classe pois existe $config->setWsdlCalPrecoPrazo().

Eu salvei o XML, fiz a modificação que nem vc indicou e usei o "set" acima para configurar no meu arquivo de bootstrap e deu certo

@marcobraghim
Copy link

Com problema aqui também =/

@marcobraghim
Copy link

Alguém sabe me dizer se é possível desabilitar o cache para reduzir a ocorrencia desses erros?

@alecshoppe
Copy link

Galera aqui pra mim aparentemente voltou.

@stale
Copy link

stale bot commented Jun 16, 2019

This issue has been automatically marked as stale because it has not had any recent activity. It will be closed in 5 days if no further activity occurs.

@stale stale bot added the stale label Jun 16, 2019
@stale
Copy link

stale bot commented Jun 21, 2019

This issue has been automatically closed because it has not had any recent activity. If you have a question or comment, please open a new issue.

@stale stale bot closed this as completed Jun 21, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants